1. 程式人生 > >[深入理解Java虛擬機器] 第4、5章 效能監控與調優

[深入理解Java虛擬機器] 第4、5章 效能監控與調優

文章目錄

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虛擬記憶體導致的長時間停頓