最近學習了JVM知識,針對Jdk8的一些Jvm參數整理了一下。以備後用。
常用jvm參數清單
指數 | 說明 | |
記憶體配置相關 | -Xms | 表示新生代初始記憶體的大小,應該小于-Xms的值; |
-Xmx | 表示新生代可被配置設定的記憶體的最大上限;當然這個值應該小于-Xmx的值; | |
-XX:NewSize=10m | 新生代記憶體大小,表示新生代初始記憶體的大小,應該小于-Xms的值; | |
-XX:MaxNewSize=10m | ||
-XX:MaxDirectMemorySize=10m | 為NIO的direct-buffer配置設定時指定最大的記憶體大小。預設是0,意思是JVM自動選擇direct-buffer的大小。 | |
-XX:MaxMetaspaceSize | 指定中繼資料區大小 | |
-XX:MetaspaceSize | 中繼資料區會在達到指定大小時發生垃圾回收,預設20.8M左右(x86下開啟c2模式) | |
-XX:MinMetaspaceFreeRatio | 當記憶體剩餘比例小于這個值時垃圾回收會頻繁一些, 預設40%。 | |
-XX:MaxMetaspaceFreeRatio | 當記憶體剩餘比例大于這個值時垃圾回收頻率會低一點,預設70%。 | |
-XX:StringTableSize=N | 指定常量池大小 | |
-XX:+PrintStringTableStatistics | JVM程序退出時會列印StringTable統計資訊 | |
-Xsssize | 設定thread stack大小同[-XX:ThreadStackSize],一般預設的幾個系統參數如下: Linux/x64: 1024 KB OS: 1024 KB | |
GC相關 | -verbose:gc | 展示每個GC事件的資訊 |
-XX:+PrintGC | 展示每個GC事件的資訊,包含-verbose:gc | |
-XX:+PrintGCDetails | 程式産生GC時,列印垃圾回收的詳細資訊,包含-XX:+PrintGC | |
-Xloggc:filename | 設定gc日志檔案,gc相關資訊會重定向到該檔案。這個配置如果和-verbose:gc同時出現,會覆寫-verbose:gc參數。 | |
-XX:+UseGCLogFileRotation | 啟用GC日志檔案的自動轉儲 | |
-XX:NumberOfGCLogFiles=1 | GC日志檔案的循環數目 | |
-XX:GCLogFileSize=1M | 控制GC日志檔案的大小 | |
-XX:+PrintGCDateStamps | 輸出gc的觸發日期 | |
-XX:+PrintGCTimeStamps | 輸出gc的觸發時間 | |
-verbose:jni | 開啟展示JNI調用資訊。 | |
-XX:+HeapDumpBeforeFullGC | 發生fullGC前做heap dump | |
-XX:+HeapDumpAfterFullGC | 發生fullGC後做heap dump | |
-XX:+HeapDumpOnOutOfMemoryError | 參數表示當JVM發生OOM時,自動生成DUMP檔案 | |
-XX:HeapDumpPath=heapdump.hprof | ${目錄}參數表示生成DUMP檔案的路徑,也可以指定檔案名稱,例如:-XX:HeapDumpPath=${目錄}/java_heapdump.hprof。如果不指定檔案名,預設為:java_<pid>_<date>_<time>_heapDump.hprof。 | |
-XX:ErrorFile=filename | 當不可恢複的錯誤發生時,錯誤資訊記錄到哪個檔案。預設是在目前目錄的一個叫做hs_err_pid pid.log的檔案。如果指定的目錄沒有寫權限,這時候檔案會建立到/tmp目錄下。 | |
-XX:ConcGCThreads=2 | 設定支援并發GC的線程數。預設值依賴于給JVM的CPU數目。 | |
-XX:CMSTriggerRatio=50 | 設定一個在CMS開始前的記憶體的觸發百分比,針對的是由-XX:MinHeapFreeRatio配置設定的記憶體。預設是80。 | |
-XX:ParallelGCThreads=threads | 并行GC時的線程數。預設值是CPU數。 | |
列印每次GC的消息,預設是關閉的。 | ||
-XX:+PrintGCApplicationConcurrentTime | 列印上次GC暫停到目前的時間。預設不列印。 | |
-XX:+PrintGCApplicationStoppedTime | 列印GC暫停的時間長度。預設不列印。 | |
-XX:+UseG1GC | 設定使用G1作為GC收集器。G1比較推薦在大堆應用場景下使用(大于6GB)。 | |
-XX:+UseSHM | 在Linux環境下支援JVM使用共享記憶體來設定大頁。 |
推薦預設開啟的參數為:
java -Xms1024M -Xmx2048M XX:MetaspaceSize=125m -XX:MaxMetaspaceSize=256m -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=2 -XX:GCLogFileSize=1M -XX:+PrintGCDetails -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintStringTableStatistics -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heapdump.hprof -jar xxx.jar