簡單有效的G1 GC調整技巧 - JAXenter

banq發表於2020-10-02

在本文中,Ram Lakshmanan分享了一些技巧,以調整G1垃圾收集器以獲得簡單而有效的最佳效能。透過這些技巧,方法和說明來調整應用程式以獲得最佳效能。自Java 9以來,G1一直是預設的GC演算法。
 

1.最大GC暫停時間
考慮將“ -XX:MaxGCPauseMillis”引數與您首選的暫停時間目標一起傳遞。將此引數設定為你最大暫停時間的目標值。G1 GC演算法會盡力達到此目標。
 

2.避免設定年輕代大小
避免將年輕代大小設定為特定大小(如透過傳遞'-Xmn,-XX:NewRatio'引數設定)。G1 GC演算法在執行時修改了年輕代的大小,以達到其暫停時間目標。如果顯式配置了年輕一代的大小,則將無法實現暫停時間目標。
 

3.刪除舊的引數
從其他GC演算法(CMS,Parallel等)轉移到G1 GC演算法時,請刪除所有與舊GC演算法有關的JVM引數。通常,將舊的GC演算法引數傳遞給G1不會產生任何效果,甚至可能以否定的方式做出響應。
 

4.消除字串重複
由於程式設計效率低下,現代應用程式浪費了大量記憶體。這是一個案例研究,顯示了Spring Boot框架浪費的記憶體。記憶體浪費的主要原因之一是字串的重複。最近的一項研究表明,應用程式記憶體的13.5%包含重複的字串。當您傳遞'-XX:+UseStringDeduplication'引數時,G1 GC提供了消除重複字串的能力。
如果您在Java 8 update 20及更高版本上執行,則可以考慮將此引數傳遞給應用程式。它具有改善整體應用程式效能的潛力。
 

相關文章