Java远程调试——性能

标签 java remote-debugging jdwp

<分区>

如果您通过 jdwp/socket 启用远程调试启动 java 进程并且没有外部进程连接,是否会影响性能?我知道当有一个远程客户端实际调试时会有很大的影响,但如果我只是在特定端口上声明 jdwp,它本身会减慢应用程序吗?任何指向文档的链接将不胜感激。

最佳答案

不会,只要没有外部进程连接,仅启用调试端口不会影响运行时性能。

JDWP 是用于调试器和它调试的 Java 虚拟机 (VM) 之间通信的协议(protocol)。 JDWP 是可选的

JDWP 启动 - 建立传输连接后,发送任何数据包之前,连接两端之间发生握手:

握手过程有以下步骤:

  1. 调试器端向VM端发送14个字节,由字符串“JDWP-Handshake”的14个ASCII字符组成。
  2. VM 端回复相同的 14 个字节:JDWP-Handshake

在 Java SE 1.4 中,Java HotSpot 虚拟机现在使用“全速调试

在以前版本的 HotSpot 中,启用调试时,程序仅使用解释器执行。现在,HotSpot 技术的全部性能优势可用于在启用调试的情况下运行的程序。改进的性能使长时间运行的程序更容易调试。它还允许测试全速进行,并允许在出现异常时启动调试器:

有关 JDWP 增强功能的更多详细信息,请参阅 http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html

关于Java远程调试——性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39467222/

相关文章:

azure - 找不到远程调试 Azure Functions 符号

debugging - 从外部设备使用 Chromium 远程调试

tcp - Java 调试线协议(protocol)远程代码执行漏洞 - joss

java - 如何在 java 中测试客户端管道?

java - 具有 Maincivity 的两项 Activity 会导致后退按钮无法正常工作

java - 将 arraylist 数据从 object/float 转换为 int 以在方法中使用

tomcat - 使用 jvisualvm 调试远程 Grails 应用程序

java - EasyMock 和 Ibatis

Java远程调试开销

java - JDWP 的 JVM 错误