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虛擬機記憶體模型筆記
- JAVA 虛擬機器可用記憶體Java虛擬機記憶體
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- Java零基礎學習之路(九)Java虛擬機器記憶體管理Java虛擬機記憶體
- 深入學習Java虛擬機器——垃圾收集器與記憶體分配策略Java虛擬機記憶體
- JAVA虛擬機器學習筆記Java虛擬機機器學習筆記
- Java虛擬機器之記憶體區域Java虛擬機記憶體
- Java虛擬機器記憶體區域劃分Java虛擬機記憶體
- Java虛擬機器記憶體區域詳解Java虛擬機記憶體
- Java虛擬機器記憶體分配與回收策略Java虛擬機記憶體
- Java虛擬機器:記憶體管理與執行引擎Java虛擬機記憶體
- java虛擬機器記憶體的各個區域Java虛擬機記憶體
- Java虛擬機器系列之Java記憶體結構簡介Java虛擬機記憶體
- Java虛擬機器08——Java記憶體模型與執行緒Java虛擬機記憶體模型執行緒
- 【Java 虛擬機器筆記】記憶體分配策略相關整理Java虛擬機筆記記憶體
- 【恩墨學院】當Java虛擬機器遇上Linux Arena記憶體池Java虛擬機Linux記憶體
- 《深入java虛擬機器》讀書筆記之Java記憶體區域Java虛擬機筆記記憶體
- 學習筆記-虛擬機器筆記虛擬機
- 深入理解虛擬機器之Java記憶體區域虛擬機Java記憶體
- 帶你清晰認識,Java虛擬機器記憶體管理!Java虛擬機記憶體
- Java虛擬機器的記憶體空間有幾種Java虛擬機記憶體
- Java虛擬機器的記憶體空間有幾種!Java虛擬機記憶體
- JVM虛擬機器和Oracle資料庫記憶體管理的學習JVM虛擬機Oracle資料庫記憶體
- JVM | 第1部分:自動記憶體管理與效能調優《深入理解 Java 虛擬機器》JVM記憶體Java虛擬機
- Java虛擬機器01——Java記憶體資料區域和記憶體溢位異常Java虛擬機記憶體溢位
- 深入理解Java虛擬機器-Java記憶體區域與記憶體溢位異常Java虛擬機記憶體溢位
- 【Java基礎】實體記憶體&虛擬記憶體Java記憶體
- win10怎麼調整虛擬記憶體_win10怎麼調虛擬記憶體Win10記憶體
- 深入理解Java虛擬機器(自動記憶體管理機制)Java虛擬機記憶體
- 淺析虛擬機器記憶體管理模型虛擬機記憶體模型
- 深入理解Java虛擬機器筆記-自動記憶體管理機制Java虛擬機筆記記憶體
- 面試準備之java虛擬機器記憶體結構面試Java虛擬機記憶體
- 深入理解Java虛擬機器 --- 記憶體分配與回收策略Java虛擬機記憶體
- Java8虛擬機器(JVM)記憶體溢位實戰Java虛擬機JVM記憶體溢位
- 深入理解 Java 虛擬機器:Java 記憶體區域透徹分析Java虛擬機記憶體
- 深入理解Java虛擬機器-Java記憶體區域透徹分析Java虛擬機記憶體
- win10虛擬記憶體如何優化_win10怎麼優化虛擬記憶體Win10記憶體優化
- 80386學習(五) 80386分頁機制與虛擬記憶體記憶體
- Linux雲端計算技術學習:虛擬機器堆記憶體結構Linux虛擬機記憶體