8

我只是想知道远程调试的额外开销。我使用带有以下参数的 HotSpot 启动应用程序:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

我听说过旧版本的 HotSpot 对性能有很大影响,但我的应用程序现在使用 java 8,我找不到任何关于它的最新信息。

4

2 回答 2

8

1.4.0 引入了“全速调试”:在HotSpot 之前的版本(1.4.0 之前)中,当启用调试时,程序只使用解释器执行。从 1.4.0 开始,HotSpot 技术的全部性能优势可用于启用调试运行的程序。改进的性能使长时间运行的程序更容易调试。

在 1.4.1 之后,JPDA 领域中没有 oracle 提到的与性能相关的增强。最后一个是在 JDK 1.4.0 中针对 Java 热点客户端 VM 和 JDK 1.4.1 中的 Java Hotspot Server VM 完成的。

因此可以肯定地说,从 1.4.1 到最新版本的调试区域不会有任何性能提升。否则,oracle 文档会提到它。

资料来源: https ://docs.oracle.com/javase/8/docs/technotes/guides/jpda/

请通过上述链接的增强部分下的链接进行确认。

于 2016-02-15T20:23:06.843 回答
1

AMD 的这篇文章将帮助您了解这会导致多少性能下降,他们甚至进行了一些调整以减少 Hotspot JVM 上的远程调试造成的性能损失,我引用:

“我们还将展示我们如何应用这些更改来提高 OpenJDK 中的 Hotspot JVM 在启用调试但尚未附加调试器时的性能。”

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

于 2016-02-11T08:05:55.300 回答