JVM學習實用的參數

實用的JVM參數

1.JIT編譯參數

說明:JVM的JIT(Just-In-Time)編譯器,可以在運行時將字節碼編譯成本地代碼,從而提高函數的執行效率。
使用:-XX:CompileThreshold 當函數的調用次數超過時,JIT就將字節碼編譯成本地機器碼。在client模式下,取值是1500;在server模式下,取值是10000。
-XX:+CITime 打印出JIT編譯的耗時。
-XX:+PrintCompilation 打印出JIT編譯的信息。

2.堆快照(堆Dump)

說明:在性能問題排查中,分析堆快照是必不可少的一環。
使用:-XX:+HeapDumpOnOutOfMemoryError 在程序發生OOM時,導出應用程序的當前堆快照。
-XX:HeapDumpPath 指定堆快照保存位置。

3.錯誤處理

-XX:OnOutOfMemoryError=c:\reset.bat 當OOM發生時,虛擬機運行一段第三方腳本。

4.獲取GC信息

-verbose:gc
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps 輸出GC的發生時間。
-XX:+PrintTenuringDistribution 查看新生對象晉升老年代的實際閾值。
-XX:MaxTenuringThreshold=18
-XX:+PrintHeapAtGC 在GC時打印詳細的堆信息。
-XX:+PrintGCApplicationStoppedTime 顯示應用程序在GC發生時的停頓時間。
-XX:+PrintGCApplicationConcurrentTime 顯示應用程序在GC停頓時間的執行時間。
-Xloggc:C:\gc.log 指定GC日誌的輸出位置。

5.類和對象跟蹤

-XX:+TraceClassUnloading 用於跟蹤類卸載情況。
-XX:+TraceClassLoading 用於跟蹤類加載情況。
-XX:+TraceClassResolution
-verbose:class 相當於同時打開-XX:+TraceClassLoading和-XX:+TraceClassUnloading
-XX:+PrintClassHistogram 用於打印運行時實例的信息。

6.控制GC

-XX:+DisableExplicitGC 禁止程序中使用System.gc()觸發的Full GC。
-Xnoclassgc 禁止GC過程中類的回收。
-Xincgc 增量式的GC。增量式的GC使用特定的算法讓GC線程和應用程序線程交叉執行,從而減小應用程序因GC而產生的停頓時間。

7.選擇類校驗器

-XX:-UseSplitVerifier 使用舊的類校驗器。
-XX:-FailOverToOldVerifier 關閉再次校驗。如果新的校驗器校驗失敗,可以使用老的校驗器再次校驗。
-Xverify:none 禁用類校驗。

8.Solaris下線程控制

-XX:+UseBoundThreads 綁定所有用戶線程到內核線程,減少線程進入飢餓狀態的次數。
-XX:+UseLWPSynchronization 使用內核線程替換線程同步。
-XX:+UseVMInterruptibleIO 允許允許時中斷線程。

9.使用大頁

-XX:+UseLargePages 啓用大頁。
-XX:LargePageSizeInBytes 指定大頁的大小。

10.壓縮指針

-XX:+UseCompressedOops 對Class的屬性指針(靜態成員變量)、對象的屬性指針、普通對象數組的每個元素指針進行壓縮。雖然壓縮指針可以節省內存,但是壓縮和解壓指針也會對JVM造成一定的性能損失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章