JMX
在 Java 启动脚本中增加如下三个参数,即可开启 JMX 远程连接
-Dcom.sun.management.jmxremote.port=2235
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
然后启动 ./jvisualvm
,在远程主机上右键,添加 JMX 连接,即可远程监控程序运行状态
jps
该命令不需要加进程ID, 【jps + 参数】即可,参数如下:
-q: 只显示VM 标示,不显示jar,class, main参数等信息。
-m: 输出主函数传入的参数。
-l: 输出应用程序主类完整package名称或jar完整名称。
-v: 列出jvm启动参数。
-V: 输出通过.hotsportrc或-XX:Flags= filename 指定的jvm参数。
jstat
详情参考这里
jstat 命令格式如下:
jstat [命令选项] [pid] [间隔时间(毫秒)] [查询次数]
命令选项可以通过 ./jstat -options
查看,结果如下:
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation
命令举例:
./jstat -gcutil 29262
./jstat -gcutil -t 29262 1000 100
./jstat -gc -t 29262 1000
jmap
详情参考这里
导出内存堆栈:
./jmap -dump:format=b,file=29262.hprof 29262
查看占用空间最大的 30 个对象(live:只计算活动的对象)
./jmap -histo:live 29262 | head -30
打印堆的摘要信息,包括使用的GC算法、堆配置信息、各区域内存使用信息等:
./jmap -heap 8501
打印等待终结的对象信息
./jmap -finalizerinfo 8501
jstack
./jstack 29262
./jstack 29262 > 29262.log
jvisualvm
可以使用jvisualvm
工具对堆栈信息进行分析
该工具位于 JAVA_HOME
的 bin
目录下
执行./jvisualvm
命令即可打开
JProfiler
打开堆栈信息之后,常用分析路径:
最大对象 –> 右键:使用选定对象 –> 引用:传入引用:确定 –> 下拉:java堆栈:显示更多
即可定位到 java 代码