【问题标题】:Java remote debugging overheadJava 远程调试开销
【发布时间】:2016-05-18 00:49:30
【问题描述】:

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

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

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

【问题讨论】:

  • 确实,除非您在 HCP 上使用 SAP JVM(他们有特殊的调试服务),否则存在巨大的远程调试开销(步入/结束时需要 30 多秒)——这几乎就像您正在本地调试。您可以在 hanatrial.ondemand.com 上试用
  • @SvetlinZarev 是仅当有人连接到 jvm 并开始调试时才启用此开销,还是在附加 agentlib 时一直保留?
  • 哦,我误解了你的问题。

标签: java remote-debugging jvm-hotspot jdwp


【解决方案1】:

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/

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 这篇文章写于2010年,当时是java 6的时代,你确定还是最新的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2011-01-18
    相关资源
    最近更新 更多