[英]How much slower does Java code with debugging info enabled run?
我想知道如果我生成的所有Java代码都包含调试信息,那么会有多少性能损失。 如果没有太多的惩罚,那么我可以做一些事情,比如在需要时在生产中获得非常有用的信息而无需重新编译。
我假设你考虑行号和局部变量名。
两个调试添加都不会向字节代码添加额外的指令。 所以性能应该不受影响。 行号和变量名只是类文件中的额外表,除非您实际调试代码,否则将被忽略。
-g
Generate all debugging information, including local variables.
By default, only line number and source file information is generated.
-g:none
Do not generate any debugging information.
-g:{keyword list}
Generate only some kinds of debugging information, specified by
a comma separated list of keywords. Valid keywords are:
source
Source file debugging information
lines
Line number debugging information
vars
Local variable debugging information
我永远不会在任何生产环境上调试。 如果您在prod上遇到问题,则需要尝试在开发或测试环境中重新创建它,这是您可以调试的地方。 我猜你已经把所有的日志记录都调到了最高的粒度,而这却未能揭示出这个问题?
取决于你的调试方式。 如果您要将信息打印到控制台或文件,那么它肯定会占用一些性能。 如果你正在使用Logging API,那么也许你可以减少Qwerky提到的粒度,这应该有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.