一、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特性)
