Java虛擬機器學習 - 記憶體調優
JVM調優主要是針對記憶體管理方面的調優,包括控制各個代的大小,GC策略。由於GC開始垃圾回收時會掛起應用執行緒,嚴重影響了效能,調優的目是為了儘量降低GC所導致的應用執行緒暫停時間、 減少Full GC次數。
代大小調優
最關鍵引數:-Xms、 -Xmx 、-Xmn 、-XX:SurvivorRatio、-XX:MaxTenuringThreshold、-XX:PermSize、-XX:MaxPermSize
-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.避免新生代設定過大
新生代設定過大,會帶來兩個問題:一是老年大變小,可能導致Full GC頻繁執行;二是 minor GC 執行回收的時間大幅度增加。
3.避免Survivor區過大或過小
-XX:SurvivorRatio引數的值越大,就意味著Eden區域變大,minor GC次數會降低,但兩塊Survivor區域變小,如果超過Survivor區域記憶體大小的物件在minor GC後仍沒被回收,則會直接進入老年代,
-XX:SurvivorRatio引數值設定過小,就意味著Eden區域變小,minor GC觸發次數會增加,Survivor區域變大,意味著可以儲存更多在minor GC後任存活的物件,避免其進入老年代。
4.合理設定物件在新生代存活的週期
新生代存活週期的值決定了新生代物件在經過多少次Minor GC後進入老年代。因此這個值要根據自己的應用來調優,Jvm引數上這個值對應的為-XX:MaxTenuringThreshold,預設值為15次。
GC調優
1.GC搭配
參見另一遍垃圾收集器
2.檢視JVM引數
3.GC日誌引數
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:c:\java\gc.log
本文原文連結:http://blog.csdn.net/java2000_wl/article/details/8090940 轉載請註明出處!
相關文章
- Java虛擬機器記憶體優化實踐Java虛擬機記憶體優化
- win10怎麼調整虛擬記憶體_win10怎麼調虛擬記憶體Win10記憶體
- win10虛擬記憶體如何優化_win10怎麼優化虛擬記憶體Win10記憶體優化
- JAVA虛擬機器學習筆記Java虛擬機機器學習筆記
- JAVA 虛擬機器可用記憶體Java虛擬機記憶體
- jvm虛擬機器學習之記憶體區域介紹JVM虛擬機機器學習記憶體
- Java虛擬機器12:Java記憶體模型Java虛擬機記憶體模型
- 實體記憶體和虛擬記憶體記憶體
- 虛擬記憶體筆記記憶體筆記
- java虛擬機器學習筆記(0)Java虛擬機機器學習筆記
- Java虛擬機器學習筆記整理Java虛擬機機器學習筆記
- 聊聊虛擬記憶體記憶體
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- Java虛擬機器之記憶體區域Java虛擬機記憶體
- Java虛擬機器4:記憶體溢位Java虛擬機記憶體溢位
- Linux 虛擬記憶體Linux記憶體
- 5.虛擬記憶體記憶體
- 虛擬記憶體到實體記憶體(32位)記憶體
- 小試Java虛擬機器記憶體管理(Java 8)Java虛擬機記憶體
- Java虛擬機器記憶體模型學習筆記Java虛擬機記憶體模型筆記
- 虛擬記憶體有什麼用 虛擬記憶體不足怎麼解決記憶體
- 【深入Java虛擬機器】之一:Java記憶體區域與記憶體溢位Java虛擬機記憶體溢位
- 資源供給:記憶體和虛擬記憶體記憶體
- Java虛擬機器記憶體分配與回收策略Java虛擬機記憶體
- Java虛擬機器記憶體區域詳解Java虛擬機記憶體
- Java虛擬機器記憶體區域劃分Java虛擬機記憶體
- eclipse 設定java虛擬機器記憶體EclipseJava虛擬機記憶體
- Java虛擬機器:JVM記憶體分代策略Java虛擬機JVM記憶體
- Java虛擬機器7:記憶體分配原則Java虛擬機記憶體
- 教你如何擴大電腦的虛擬記憶體? 什麼是虛擬記憶體?記憶體
- Java虛擬機器2:Java記憶體區域及物件Java虛擬機記憶體物件
- [Java虛擬機器]Java記憶體模型與執行緒Java虛擬機記憶體模型執行緒
- 走出虛擬記憶體禁(轉)記憶體
- ORACLE DISCOVERER虛擬記憶體低Oracle記憶體
- 虛擬記憶體(待補充)記憶體
- JVM | 第1部分:自動記憶體管理與效能調優《深入理解 Java 虛擬機器》JVM記憶體Java虛擬機
- Java虛擬機器學習分享Java虛擬機機器學習
- 記憶體管理兩部曲之虛擬記憶體管理記憶體