如果您启动一个通过 jdwp/socket 启用远程调试的 java 进程并且没有外部进程连接,是否会对性能造成影响?我知道当有一个远程客户端实际调试时会有很大的影响,但是如果我只是在特定端口上声明 jdwp,它本身会减慢应用程序的速度吗?任何文档链接将不胜感激。
问问题
2049 次
1 回答
6
不,只要没有外部进程连接,仅启用调试端口就不会影响运行时性能。
JDWP 是用于调试器与其调试的 Java 虚拟机 (VM) 之间通信的协议。JDWP 是可选的。
JDWP 启动- 建立传输连接后,在发送任何数据包之前,连接两端之间会发生握手:
握手过程有以下步骤:
- 调试器端向 VM 端发送 14 个字节,由字符串“JDWP-Handshake”的 14 个 ASCII 字符组成。
- 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
于 2016-09-13T11:31:22.483 回答