[深入理解Java虛擬機器] 第4、5章 效能監控與調優
阿新 • • 發佈:2019-01-07
文章目錄
JDK的命令列工具
jps:虛擬機器程序狀況工具
可以列出正在執行的虛擬機器程序,並顯示虛擬機器執行主類(Main Class,main()函式所在的類)名稱以及這些程序的本地虛擬機器唯一ID(Local Virtual Machine Identifier,LVMID)
jstat:虛擬機器統計資訊監視工具
用於監視虛擬機器各種執行狀態資訊的命令列工具;
jinfo:Java配置資訊工具
實時地檢視和調整虛擬機器各項引數。使用jps命令的-v引數可以檢視虛擬機器啟動時顯式指定的引數列表
jmap:Java記憶體映像工具
用於生成堆轉儲快照(一般稱為heapdump或dump檔案)
jhat:虛擬機器堆轉儲快照分析工具
與jmap搭配使用,來分析jmap生成的堆轉儲快照
jstack:Java堆疊跟蹤工具
用於生成虛擬機器當前時刻的執行緒快照(一般稱為threaddump或者javacore檔案)
HSDIS:JIT生成程式碼反彙編
HSDIS是一個Sun官方推薦的HotSpot虛擬機器JIT編譯程式碼的反彙編外掛,它的作用是讓HotSpot的-XX:+PrintAssembly指令呼叫它來把動態生成的原生代碼還原為彙編程式碼輸出,同時還生成了大量非常有價值的註釋,這樣我們就可以通過輸出的程式碼來分析問題。
JDK的視覺化工具
JConsole:Java監視與管理控制檯
一種基於JMX的視覺化監視、管理工具。它管理部分的功能是針對JMX MBean進行管理
VisualVM:多合一故障處理工具
不需要被監視的程式基於特殊Agent執行,因此它對應用程式的實際效能的影響很小,使得它可以直接應用在生產環境中。
調優案例
-
高效能硬體上的程式部署策略
在高效能硬體上部署程式,目前主要有兩種方式:- 通過64位JDK來使用大記憶體。
- 使用若干個32位虛擬機器建立邏輯叢集來利用硬體資源。
-
叢集間同步導致的記憶體溢位
-
堆外記憶體導致的溢位錯誤
-
外部命令導致系統緩慢
-
伺服器JVM程序崩潰
-
不恰當資料結構導致記憶體佔用過大
-
由Windows虛擬記憶體導致的長時間停頓