一、JDK的命令行工具
1、jps(JVM Process Status Tools):虚拟机进程状况工具
jps -l
2、jinfo(Configuration Info for java):Java配置信息工具
jinfo [option] pid
3、jmap(Memory Map for java):java内存映像工具
用于生成堆转储快照,即dump文件
jmap -dump:format=b,file=eclipse.bin 3500 #3500是通过jps命令拿到的LVMID
4、jstat(JVM Statistics Monitoring Tool):虚拟机统计信息监视工具
jstat -gc 2764 250 20 # -gc监视java堆状况 每250毫秒查询一次进程2764垃圾收集状态,共查询20次 jstat -gcutil 2754 #监视java堆内存使用状况
top -p 12309 -H #-p用于指定进程,-H用于获取每个线程的信息
5、jhat(JVM Heap Analysis Tool):虚拟机dump文件分析工具
jhat eclipse.bin
屏幕显示“server is ready”,用户在浏览器中键入http://localhost:7000/就可以看到分析结果
6、jstack(Stack Trace for java):java堆栈跟踪工具
jstack -l 3500
用于生成虚拟机当前时刻的线程快照,即threaddump、javacore文件。
线程快照的目的:定位线程长时间停顿的原因
线程长时间停顿的主要原因:等待外部资源(数据库连接、网络资源、设备资源)、死循环、锁等待(活锁和死锁)
二、JDK的可视化工具
JConsole:Java监视与管理控制台
VisualVM:多合一故障处理工具
https://www.ibm.com/developerworks/cn/java/j-lo-visualvm/
三、堆外内存中的直接内存
使用JDK自带的Native Memory Tracking(NMT特性)