jvm效能分析
阿新 • • 發佈:2022-04-14
jprofile工具,參考 https://www.cnblogs.com/jpfss/p/8488111.html
以下是jdk自帶工具(jps, jstack, jmap, jconsole)的探討:
java環境 :jdk 1.8(基於ubantu)
【jstat】
參考 https://www.jianshu.com/p/845924a1b8f2,https://www.cnblogs.com/sxdcgaq8080/p/11089841.html
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
獲取某個程序pid後,檢視對應資訊
jstat -options -class 顯示ClassLoad的相關資訊; -compiler 顯示JIT編譯的相關資訊; -gc 顯示和gc相關的堆資訊; -gccapacity 顯示各個代的容量以及使用情況; -gcmetacapacity 顯示metaspace的大小 -gcnew 顯示新生代資訊; -gcnewcapacity 顯示新生代大小和使用情況; -gcold 顯示老年代和永久代的資訊; -gcoldcapacity 顯示老年代的大小; -gcutil 顯示垃圾收集資訊; -gccause 顯示垃圾回收的相關資訊(通-gcutil),同時顯示最後一次或當前正在發生的垃圾回收的誘因; -printcompilation 輸出JIT編譯的方法資訊
報錯{pid} not found,實際java 程序 30721正常執行著呢,查了一下
java程序預設把 jvm perfdata寫入/tmp/hsperfdata_{user}/{pid}中(即jstat 預設讀取這個檔案)
但我的程式是自啟動的,即通過systemctl start {service-name}來啟動的,找一下這個檔案,並cp到/tmp/hsperfdata_{user}/下
再次檢視效能