Javac调试开启和关闭之间是否存在性能差异?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

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

提问于
用户回答回答于

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

PS。通常对于调试来说,关闭优化是有价值的。这确实会对性能产生影响。

用户回答回答于

关闭调试应该不会有所作为。但是,一旦关闭调试并打开优化,您应该看到一个区别,因为这会在编译时进行一些静态优化。这样,即使您的热点优化代码在运行时也会变得更快。

但到目前为止,在获得完整的堆栈跟踪或者具有更多用户性能之间的权衡之后,我总是投票支持堆栈跟踪。毕竟,用户每年愿意花1000美元购买一台更快的机器,但不愿意花15分钟为您提供有意义的错误消息,以解决他们的问题。

扫码关注云+社区