繁体   English   中英

启用调试信息的Java代码运行速度有多慢?

[英]How much slower does Java code with debugging info enabled run?

我想知道如果我生成的所有Java代码都包含调试信息,那么会有多少性能损失。 如果没有太多的惩罚,那么我可以做一些事情,比如在需要时在生产中获得非常有用的信息而无需重新编译。

我假设你考虑行号和局部变量名。

两个调试添加都不会向字节代码添加额外的指令。 所以性能应该不受影响。 行号和变量名只是类文件中的额外表,除非您实际调试代码,否则将被忽略。


javac编译器选项:

-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM