国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

jvm內存調優

2019-11-11 07:18:02
字體:
來源:轉載
供稿:網友

首先需要注意的是在對JVM內存調優的時候不能只看操作系統級別java進程所占用的內存,這個數值不能準確的反應堆內存的真實占用情況,因為GC過后這個值是不會變化的,因此內存調優的時候要更多地使用JDK提供的內存查看工具,比如JConsole和Java VisualVM。

對JVM內存的系統級的調優主要的目的是減少GC的頻率和Full GC的次數,過多的GC和Full GC是會占用很多的系統資源(主要是CPU),影響系統的吞吐量。特別要關注Full GC,因為它會對整個堆進行整理,導致Full GC一般由于以下幾種情況:

舊生代空間不足調優時盡量讓對象在新生代GC時被回收、讓對象在新生代多存活一段時間和不要創建過大的對象及數組避免直接在舊生代創建對象 Pemanet Generation空間不足增大Perm Gen空間,避免太多靜態對象 統計得到的GC后晉升到舊生代的平均大小大于舊生代剩余空間控制好新生代和舊生代的比例 System.gc()被顯示調用垃圾回收不要手動觸發,盡量依靠JVM自身的機制 

調優手段主要是通過控制堆內存的各個部分的比例和GC策略來實現,下面來看看各部分比例不良設置會導致什么后果

1)新生代設置過小

一是新生代GC次數非常頻繁,增大系統消耗;二是導致大對象直接進入舊生代,占據了舊生代剩余空間,誘發Full GC

2)新生代設置過大

一是新生代設置過大會導致舊生代過小(堆總量一定),從而誘發Full GC;二是新生代GC耗時大幅度增加

一般說來新生代占整個堆1/3比較合適

3)Survivor設置過小

導致對象從eden直接到達舊生代,降低了在新生代的存活時間

4)Survivor設置過大

導致eden過小,增加了GC頻率

另外,通過-XX:MaxTenuringThreshold=n來控制新生代存活時間,盡量讓對象在新生代被回收

由上一篇博文JVM學習筆記(三)------內存管理和垃圾回收可知新生代和舊生代都有多種GC策略和組合搭配,選擇這些策略對于我們這些開發人員是個難題,JVM提供兩種較為簡單的GC策略的設置方式

1)吞吐量優先

JVM以吞吐量為指標,自行選擇相應的GC策略及控制新生代與舊生代的大小比例,來達到吞吐量指標。這個值可由-XX:GCTimeRatio=n來設置

2)暫停時間優先

JVM以暫停時間為指標,自行選擇相應的GC策略及控制新生代與舊生代的大小比例,盡量保證每次GC造成的應用停止時間都在指定的數值范圍內完成。這個值可由-XX:MaxGCPauseRatio=n來設置

 

最后匯總一下JVM常見配置

堆設置-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:設置年輕代大小-XX:NewRatio=n:設置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個年輕代年老代和的1/4-XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區占整個年輕代的1/5-XX:MaxPermSize=n:設置持久代大小收集器設置-XX:+UseSerialGC:設置串行收集器-XX:+UseParallelGC:設置并行收集器-XX:+UseParalledlOldGC:設置并行年老代收集器-XX:+UseConcMarkSweepGC:設置并發收集器垃圾回收統計信息-XX:+PRintGC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-Xloggc:filename并行收集器設置-XX:ParallelGCThreads=n:設置并行收集器收集時使用的CPU數。并行收集線程數。-XX:MaxGCPauseMillis=n:設置并行收集最大暫停時間-XX:GCTimeRatio=n:設置垃圾回收時間占程序運行時間的百分比。公式為1/(1+n)并發收集器設置-XX:+CMSIncrementalMode:設置為增量模式。適用于單CPU情況。-XX:ParallelGCThreads=n:設置并發收集器年輕代收集方式為并行收集時,使用的CPU數。并行收集線程數。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天门市| 铜山县| 凤城市| 蒙自县| 武邑县| 沁阳市| 绥德县| 响水县| 鞍山市| 边坝县| 儋州市| 西和县| 宁乡县| 全州县| 云浮市| 澄迈县| 永吉县| 河池市| 呼图壁县| 合川市| 冀州市| 肥西县| 呼图壁县| 辽阳市| 佛山市| 天津市| 吉林省| 娄底市| 旬阳县| 韶关市| 洪江市| 全南县| 霍林郭勒市| 江都市| 临高县| 金塔县| 璧山县| 昌邑市| 麻城市| 北碚区| 威信县|