java:jdwp会降低性能吗?

时间:2018-07-04 10:41:27

标签: java debugging jdwp

众所周知,在jdk 5之后,无需指定-Xdebug进行调试,而是使用-agentlib:jdwp,但这是否意味着调试模式已消失?这是否意味着Java程序将在正常模式下运行而无需进行任何性能折衷,而您仍可以在要调试的任何时候附加它?

与C / C ++相比,只要不剥离调试符号,就可以调试以优化模式编译的应用程序,尽管在优化模式下,由于例如以下原因,调试不那么精确。某些功能是内联的或已消除。顺便说一句,当您在构建应用程序时需要注意时,java是否具有调试符号/信息的概念?

1 个答案:

答案 0 :(得分:1)

  

众所周知,在jdk 5之后,无需指定-Xdebug进行调试,而是使用-agentlib:jdwp,但这是否意味着调试模式已消失?

是的。老式的调试模式不见了。 (-Xdebug选项被现代JVM忽略。)

  

这是否意味着Java程序将在正常模式下运行而无需进行任何性能折衷,而您仍可以在要调试的任何时候附加它?

例如,请参见Overhead of enabling JVMTI *capability* to query local variables

在性能上需要权衡取舍 1 ,但少于-Xdebug。 JVMTI代理会抑制一些 JIT编译器优化,而不是全部。

  

当您在构建应用程序时需要注意时,java是否具有调试符号/信息的概念?

是的。请参见-g的{​​{1}}选项。


1-大多数消息人士称成本很小或可以忽略不计,但是我看到一条评论声称性能受到了十倍的打击。目前尚不清楚这是javac的费用...还是评论者对代理的处理。例如,如果启用进入/退出跟踪,则性能成本会很高。不幸的是,这全都是轶事...