Java 中的 agentlib

标准命令选项

1
-agentlib:<libname>[=<选项>]

可用代理参数 libname:

  • hprof: SDK 自带的一个简单的 profiler 代理,它通过与 Java Virtual Machine Profiler Interface (JVMPI) 交互,将 profiling 信息通过本地文件或 socket 输出 ASCII 或二进制格式的流
  • jdwp: JDWP(Java Debug Wire Protocal) java 调试传输协议,JVM 自带对该协议的支持,可以实现远程调试应用
1
2
# 使用 sockets 监听调试器
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888

远程调试

远程调试,需要保证和远程启动的代码一致才能使用。在 java 启动命令后面添加启动调试语句

  • -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=50055 : 适用于jdk4
  • -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055 : 适用于jdk 5-8
  • -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:50055 : 适用于jdk9以上