3.深入jvm核心-原理、診斷與優化-6. 效能監控工具
阿新 • • 發佈:2019-09-26
-
uptime
當前時間 1:01 系統已執行的時間 1:42 當前線上使用者 3 user 平均負載:3.62, 3.39, 3.24,最近1分鐘、5分鐘、15分鐘系統的負載
-
top
-
jps
列出java程序,類似於ps命令 引數-q可以指定jps只輸出程序ID ,不輸出類的短名稱 引數-m可以用於輸出傳遞給Java程序(主函式)的引數 引數-l可以用於輸出主函式的完整路徑 引數-v可以顯示傳遞給JVM的引數 jps 6260 Jps 7988 Main 400 jps -q 7988 7152 jps -m jps -m -l jps -m -l -v
-
jinfo
可以用來檢視正在執行的Java應用程式的擴充套件引數,甚至支援在執行時,修改部分引數 -flag <name>:列印指定JVM的引數值 -flag [+|-]<name>:設定指定JVM引數的布林值 -flag <name>=<value>:設定指定JVM引數的值
-
顯示了新生代物件晉升到老年代物件的最大年齡
jinfo -flag MaxTenuringThreshold 2972
-XX:MaxTenuringThreshold=15
-
顯示是否列印GC詳細資訊
jinfo -flag PrintGCDetails 2972
-XX:-PrintGCDetails
-
執行時修改引數,控制是否輸出GC日誌
jinfo -flag PrintGCDetails 2972
-XX:-PrintGCDetails
jinfo -flag +PrintGCDetails 2972 jinfo -flag PrintGCDetails 2972
-XX:+PrintGCDetails
-
-
jmap
生成Java應用程式的堆快照和物件的統計資訊
jmap -histo 6292 >/Users/heliming/image/a.log
Dump堆
jmap -dump:format=b,file=/Users/heliming/image/heap.hprof 6292
-
jstack
列印執行緒dump -l 列印鎖資訊 -m 列印java和native的幀資訊 -F 強制dump,當jstack沒有響應時使用
jstack 6292 >>/Users/heliming/image/a.txt
jstack 6292
public class DeadLockDemo { private static String A = "A"; private static String B = "B"; static class Test { public static void main(String[] args) throws InterruptedException { new DeadLockDemo().deadLock(); } } /** * 執行緒死鎖 */ private void deadLock() { Thread t1 = new Thread(new Runnable() { @Override public void run() { synchronized (A) { try { Thread.currentThread().sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (B) { System.out.println("1"); } } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { synchronized (B) { synchronized (A) { System.out.println("2"); } } } }); t1.start(); t2.start(); } }
-
jvisualvm jdk的bin下視覺化檢測工具 使用:https://my.oschina.net/u/3730149/blog/write/3109370