代码之家  ›  专栏  ›  技术社区  ›  kingluo

Java:JDWP会降低性能吗?

  •  1
  • kingluo  · 技术社区  · 6 年前

    众所周知,在jdk 5之后,不需要指定 -Xdebug 相反,对于调试,请使用 -agentlib:jdwp ,但这是否意味着调试模式已消失?这是否意味着Java程序将在正常模式下运行,而不需要任何性能权衡,而您仍然可以随时附加它来调试它?

    与C/C++相比,你可以调试优化的模式编译的应用程序,只要你不删除调试符号,虽然在优化模式下调试没有被精确化,因为某些功能是内联的或被消除的。那么顺便问一下,当你在构建应用程序时需要小心的时候,java是否有调试符号/信息的概念?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Stephen C    6 年前

    众所周知,在jdk 5之后,不需要指定 -Xdebug 相反,对于调试,请使用-agentlib:jdwp,但这是否意味着调试模式已消失?

    对。旧的学校调试模式消失了。(The -氟橡胶 选项被现代JVM忽略。)

    这是否意味着Java程序将在正常模式下运行,而不需要任何性能权衡,而您仍然可以随时附加它来调试它?

    Overhead of enabling JVMTI *capability* to query local variables 例如。

    有一些性能上的折衷 ,但比 -XDebug . JVMTI代理抑制 一些 jit编译器优化,不是全部。

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

    是的。见 -g 选择权 javac .


    1-大多数消息来源说,成本很小或可以忽略不计,但我看到一条评论,声称10倍的性能命中。不清楚这是否是 -agentlib:jdwp …或者是评论人对经纪人做了什么。例如,如果启用进入/退出跟踪,则性能成本是显著的。不幸的是,这都是奇闻轶事…