如果我打开使用Javac生成调试信息,则类文件大20-25%。这对运行Java程序有任何性能影响吗?如果是,在哪些条件和多少。我希望对加载类有一点影响,因为文件较大但这应该是最小的。

有帮助吗?

解决方案

在任何语言中,调试信息都是元信息。它本质上增加了目标文件的大小,从而增加了加载时间。在调试器外部执行期间,实际上完全忽略了此信息。正如 JVM规范中所述(尽管不是很清楚) 调试信息存储在字节码流之外。这意味着在执行时,类文件没有区别。如果你想确定,请尝试一下: - )。

聚苯乙烯。通常用于调试,关闭优化是有价值的。 会对性能产生影响。

其他提示

单独关闭调试不应该产生任何影响。但是一旦关闭调试并启用优化,您应该看到一个区别,因为这会在编译时进行一些静态优化。这样,即使是热点优化代码也会在运行时变得更快。

但到目前为止,在获得完全堆栈跟踪意义或具有更多用户性能之间的权衡,我总是投票支持堆栈跟踪。毕竟,用户愿意每年花1000美元来获得更快的机器,但不愿意花15分钟给你带来有意义的错误信息来解决他们的问题。

这些年后,我更愿意比用户的1000美元高出15分钟。 :)

请注意,由于JDK1.3 javac忽略了任何优化标志,因此“编译时优化是不必要的”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top