我只是想知道远程调试的额外开销。我使用带有以下参数的 HotSpot 启动应用程序:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
我听说过旧版本的 HotSpot 对性能有很大影响,但我的应用程序现在使用 java 8,我找不到任何关于它的最新信息。
我只是想知道远程调试的额外开销。我使用带有以下参数的 HotSpot 启动应用程序:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
我听说过旧版本的 HotSpot 对性能有很大影响,但我的应用程序现在使用 java 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/
请通过上述链接的增强部分下的链接进行确认。
AMD 的这篇文章将帮助您了解这会导致多少性能下降,他们甚至进行了一些调整以减少 Hotspot JVM 上的远程调试造成的性能损失,我引用:
“我们还将展示我们如何应用这些更改来提高 OpenJDK 中的 Hotspot JVM 在启用调试但尚未附加调试器时的性能。”