❶ JVM常用調試工具介紹
一、Linux ps (英文全拼:process status)命令用於顯示當前進程的狀態
ps aux 基本輸出
ps aux 列名解釋
註:優化機器資源主要從佔用機器cpu和mem高的程序入手
二、Linux top命令查看正在運行的進程和系統負載信息,包括cpu負載、內存使用、各個進程所佔系統資源等
基本輸出
欄位解釋
三、Linux top -H -p pid。查看某個進程內部線程佔用情況
四、jps(java Virtual Machine Process Status Tool) 是java提供的一個顯示當前所有java進程pid的命令
五、jinfo LVMID。可以用來查看 Java 進程運行的 JVM 參數
六、jstat(Java Virtual Machine statistics monitoring tool)主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。可見,Jstat是輕量級的、專門針對JVM的工具,非常適用
七、jstack(Java Stack Trace Tool)主要用於生成java虛擬機當前時刻的線程快照。線程快照是當前java虛擬機內每一條線程正在執行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現長時間停頓的原因,如線程間死鎖、死循環、請求外部資源導致的長時間等待等。 線程出現停頓的時候通過jstack來查看各個線程的調用堆棧,就可以知道沒有響應的線程到底在後台做什麼事情,或者等待什麼資源
八、jmap命令(Java Memory Map)是其中之一。主要用於列印指定Java進程(或核心文件、遠程調試伺服器)的共享對象內存映射或堆內存細節
九、MAT(Memory Analysis Tools)是一個分析 Java堆數據的專業工具,用它可以定位內存泄漏的原因
此次分享准備過程中,發現JDK調試工具在Root用戶下訪問Yarn用戶啟動的Java虛擬機,獲取不到信息,jstatck獲取到的還不全(沒有線程描述信息行)
可以使用 sudo -u yarn /usr/java/jdk1.8.0_181-cloudera/bin/jstack 這種方式獲取。