常用的 jvm 調優的引數都有哪些

CodeWhisperer001發表於2024-11-09

堆記憶體設定

  1. -Xms:設定JVM堆的初始大小。
  • 例如:​​-Xms2g​​ 表示初始堆大小為2GB。
  1. -Xmx:設定JVM堆的最大大小。
  • 例如:​​-Xmx2g​​ 表示最大堆大小為2GB。
  1. -XX:NewRatio:設定年輕代和老年代的比例。
  • 例如:​​-XX:NewRatio=4​​ 表示年輕代和老年代的比例為1:4。
  1. -XX:SurvivorRatio:設定Eden區和Survivor區的比例。
  • 例如:​​-XX:SurvivorRatio=8​​ 表示Eden區和Survivor區的比例為8:2。

垃圾回收器設定

  1. -XX:+UseSerialGC:使用序列垃圾回收器。
  2. -XX:+UseParallelGC:使用並行垃圾回收器(年輕代)。
  3. -XX:+UseParallelOldGC:使用並行垃圾回收器(年輕代和老年代)。
  • 例如:​​-XX:+UseParallelOldGC​​ 表示使用ParNew + Parallel Old垃圾回收器組合。
  1. -XX:+UseConcMarkSweepGC:使用CMS垃圾回收器(年輕代使用ParNew,老年代使用CMS)。
  • 例如:​​-XX:+UseConcMarkSweepGC​​ 表示使用CMS + Serial Old垃圾回收器組合。
  1. -XX:+UseG1GC:使用G1垃圾回收器。
  • 例如:​​-XX:+UseG1GC​​ 表示使用G1垃圾回收器。

垃圾回收日誌

  1. -XX:+PrintGC:開啟列印GC資訊。
  2. -XX:+PrintGCDetails:列印詳細的GC資訊。
  3. -XX:+PrintGCTimeStamps:列印GC的時間戳。
  4. -XX:+PrintGCDateStamps:列印GC的日期和時間。
  5. -Xloggc::將GC日誌輸出到指定檔案。
  • 例如:​​-Xloggc:/path/to/gc.log​​ 表示將GC日誌輸出到​​/path/to/gc.log​​檔案。

其他常用引數

  1. -XX:MaxPermSize:設定永久代(PermGen)的最大大小(Java 8之前)。
  • 例如:​​-XX:MaxPermSize=256m​​ 表示永久代最大大小為256MB。
  1. -XX:MaxMetaspaceSize:設定元空間(Metaspace)的最大大小(Java 8及以後)。
  • 例如:​​-XX:MaxMetaspaceSize=256m​​ 表示元空間最大大小為256MB。
  1. -XX:MaxDirectMemorySize:設定直接記憶體的最大大小。
  • 例如:​​-XX:MaxDirectMemorySize=256m​​ 表示直接記憶體最大大小為256MB。
  1. -XX:G1HeapRegionSize:設定G1垃圾回收器的區域大小。
  • 例如:​​-XX:G1HeapRegionSize=16m​​ 表示G1垃圾回收器的區域大小為16MB。
  1. -XX:InitiatingHeapOccupancyPercent:設定觸發G1垃圾回收的堆佔用率閾值。
  • 例如:​​-XX:InitiatingHeapOccupancyPercent=70​​ 表示當堆佔用率達到70%時觸發G1垃圾回收。
  1. -XX:+HeapDumpOnOutOfMemoryError:在發生OutOfMemoryError時生成堆轉儲檔案。
  • 例如:​​-XX:+HeapDumpOnOutOfMemoryError​​ 表示在發生OutOfMemoryError時生成堆轉儲檔案。
  1. -XX:HeapDumpPath=:指定堆轉儲檔案的儲存路徑。
  • 例如:​​-XX:HeapDumpPath=/path/to/heapdump.hprof​​ 表示堆轉儲檔案儲存路徑為​​/path/to/heapdump.hprof​​。

示例

java -Xms2g -Xmx2g -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseG1GC -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=256m -XX:InitiatingHeapOccupancyPercent=70 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump.hprof -jar myapp.jar
常用的 jvm 調優的引數都有哪些

相關文章