天天看點

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

Java監控工具及JVM常用參數

jvisualvm

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

  • 對應用程式進行故障排除,并監視和改進應用程式的性能。
  • 生成和分析堆轉儲
  • 跟蹤記憶體洩漏
  • 執行和監視垃圾收集
  • 執行輕量級記憶體和CPU分析
    Java監控工具及JVM常用參數

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