Java远程调试-性能[重复]
Posted
技术标签:
【中文标题】Java远程调试-性能[重复]【英文标题】:Java remote debugging - performance [duplicate] 【发布时间】:2017-01-20 21:20:40 【问题描述】:如果您启动一个通过 jdwp/socket 启用远程调试的 java 进程并且没有外部进程连接,是否会对性能造成影响?我确实知道当有一个远程客户端实际调试时会有很大的影响,但是如果我只是在特定端口上声明 jdwp,它本身会减慢应用程序的速度吗?任何文档链接将不胜感激。
【问题讨论】:
【参考方案1】:否,只要没有外部进程连接,仅启用调试端口就不会影响运行时性能。
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
【讨论】:
以上是关于Java远程调试-性能[重复]的主要内容,如果未能解决你的问题,请参考以下文章