Java应用程序是否会因-Xdebug的存在而放慢速度,或者仅在逐步完成代码时才放慢速度?

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

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

我意识到Java代码在调试器中运行时会变慢

问题是,通过使用这些选项启动Java,代码是否会变慢?

Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n

??

或者,只有在连接到“调试端口”并实际使用IDE执行代码时才会发生减速?

提问于
用户回答回答于

首先,严格地回答你的问题 - 至少如题目所述 - -Xdebug仅在5.0之前的JVM中使用JVMDI 启用VM中的调试支持。所以它本身并没有太大的作用。此外,JVMDI 自5.0开始弃用,并支持JVMTI

- Xdebug 从支持JVMDI启动开始。JVMDI已被弃用,并且不能用于J2SE 5.0中的调试,所以在J2SE 5.0中调试时不需要此选项。

所以-Xdebug不再做任何事情,重要的部分是:

-Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...

或者从Java 5.0开始,更新的版本(您应该更喜欢5.0版中的JDWP代理使用JVM TI接口而不是旧的JVMDI接口):

--agentlib:jdwp=<name1>[=<value1>],<name2>[=<value2>]...

现在,就我所知,只需加载jwdp代理和/或配置JVM以侦听给定端口上的套接字连接,就不会有任何明显的性能影响。但连接调试器呢。

用户回答回答于

性能测试结果在AMD表明,简单地通过JVM命令行启用调试代理导致性能下降,无论其连接到它的调试器,并且可降解根据工作量相当大:

请注意,当我们测量性能时,我们实际上并没有附加调试器,所以我们假设此agentlib选项在此使用情况下与性能无关。当我们删除这个选项时,CPU利用率和这个工作负载的性能(在每秒处理的请求中测量的)性能都有显着提高。

查看他们的报告:

http://developer.amd.com/resources/documentation-articles/articles-whitepapers/java-performance-when-debugging-is-enabled/

扫码关注云+社区

领取腾讯云代金券