1. 程式人生 > >Java監控工具及JVM常用引數

Java監控工具及JVM常用引數

GC

  Java技術體系中所提倡的自動記憶體管理最終可以歸結為自動化地解決了兩個問題:給物件分配記憶體以及回收分配給物件的記憶體。
  而當需要排查各種記憶體溢位記憶體洩漏問題時,當垃圾收整合為系統達到更高併發量的瓶頸時,我們就需要對那些“自動化”的技術實施必要的監控和調節,因此需要藉助分析資料來對JVM及GC的引數進行調優。

詳見Java 垃圾收集器與記憶體分配策略

歷代Java版本所使用的預設GC Collecter

Java 7 - P GC
Java 8 - P GC
Java 9 - G1 GC
Java 10- G1 GC
Java 11- Z GC

jdk監控工具

jdk自帶有不少工具,下述為Java故障排除,分析,監視和管理的工具

  • jcmd(JVM診斷命令工具)
  • jconsole(符合JMX的圖形工具,用於監視Java虛擬機器)
  • JMC(Java Mission Control(JMC)客戶端包括監視和管理Java應用程式的工具)
  • jvisualvm(在Java虛擬機器中執行時提供有關基於Java技術的應用程式(Java應用程式)的詳細資訊)

jconsole

JConsole是一個基於JMX的GUI工具,用於連線正在執行的JVM,用於監控和管理Java程式,較適合監控程式的堆情況。詳見

jconsole
在這裡插入圖片描述

jvisualvm

具體功能如下,詳細介紹見jvisualvm

  • 對應用程式進行故障排除,並監視和改進應用程式的效能。
  • 生成和分析堆轉儲
  • 跟蹤記憶體洩漏
  • 執行和監視垃圾收集
  • 執行輕量級記憶體和CPU分析
    在這裡插入圖片描述

JVM常用引數

JVM引數 釋義
-Xmx 最大堆大小
-Xms 初始堆大小
-Xmn 年輕代大小
-Xss 執行緒的堆疊大小
-XX:SurvivorRatio=8 Eden區與Survivor區的大小比值,設定為8,則兩個Survivor區與一個Eden區的比值為2:8,一個Survivor區佔整個年輕代的1/10
-XX:+UseG1GC 使用 G1 (Garbage First) 垃圾收集器
-XX:MaxTenuringThreshold 提升年老代的最大臨界值(tenuring threshold). 預設值為 15[每次Young GC,增加1歲,到15歲如果仍存活,則進入年老代]

注:1.推薦-Xms和-Xmx設定一致,避免堆記憶體不足時JVM調整堆的開銷


參考資料:
1.Default garbage collector
2.JVM引數詳解
3.Java平臺,標準版HotSpot虛擬機器垃圾收集調優指南
4.jconsole
5.jvisualvm
6.JDK Tools and Utilities