首頁  >  文章  >  Java  >  Java虛擬機器學習 - 記憶體調優

Java虛擬機器學習 - 記憶體調優

黄舟
黄舟原創
2017-02-17 10:32:001568瀏覽

JVM調優主要是針對記憶體管理方面的調優,包括控制各世代的大小,GC策略。由於GC開始垃圾回收時會掛起應用線程,嚴重影響了效能,調優的目是為了盡量降低GC所導致的應用線程暫停時間、 減少Full GC次數

代大小調優

最關鍵參數:-Xms、 -Xmx 、-Xmn 、-XX:SurvivorRatio、-XX:MaxTeringThreshold-XX:Per -Xms、 -Xmx 通常設定為相同的值,避免運行時要不斷擴展JVM內存,這個值決定了JVM heap所能使用的最大內存。

-Xmn 決定了新生代空間的大小,新生代Eden、S0、S1三個區域的比率可以透過-XX:SurvivorRatio來控制(假如值為4  表示:Eden:S0:

S1 = 4 :3:3 )

-XX:MaxTenuringThreshold 控制物件在經過多少次minor GC之後進入老年代,此參數只有在
Serial 序列GC時有效。

-XX:PermSize、-XX:MaxPermSize 用來控制方法區的大小,通常設定為相同的值。

1.避免新生代大小設定過小

當新生代設定過小時,會產生兩種比較明顯的次數,一是是minor GC現象minor GC物件直接進入老年代。當老年代記憶體不足時,會觸發Full GC。

2.避免新生代設定過大

新生代設定過大,會帶來兩個問題:一是老年大變小,可能導致FullFo ,可能導致Full執行;是minor GC 執行回收的時間大幅增加。

3.避免Survivor區過大或過小

-XX:SurvivorRatiod 的值,但兩塊

Survivor區域變小,如果超過Survivor區域記憶體大小的物件在minor GC後仍沒被回收,則會直接進入老年代,

-XX:SurvivorRatio參數值設定過小,就代表GC會增加,

Survivor區域變大,意味著可以儲存更多在minor GC後任存活的對象,避免進入老年代。 4.合理設定對像在新生代存活的周期

GC元年代。因此這個值要根據自己的應用來調優,Jvm參數上這個值對應的為-XX:MaxTenuringThreshold,預設值為15次。

GC tuning

1.GC matching

See another garbage collector

2. View JVM parameters

Command line tool Visual tool

3.GC log parameters

-XX:+PrintGCDetails

##-XX:+PrintGCTimeStamps

##-Xloggc:c:\java\gc.log


The above is the content of Java virtual machine learning - memory tuning. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn