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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

jvm內(nèi)存調(diào)優(yōu)

2019-11-11 05:54:32
字體:
供稿:網(wǎng)友

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

對JVM內(nèi)存的系統(tǒng)級的調(diào)優(yōu)主要的目的是減少GC的頻率和Full GC的次數(shù),過多的GC和Full GC是會占用很多的系統(tǒng)資源(主要是CPU),影響系統(tǒng)的吞吐量。特別要關(guān)注Full GC,因為它會對整個堆進行整理,導(dǎo)致Full GC一般由于以下幾種情況:

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

調(diào)優(yōu)手段主要是通過控制堆內(nèi)存的各個部分的比例和GC策略來實現(xiàn),下面來看看各部分比例不良設(shè)置會導(dǎo)致什么后果

1)新生代設(shè)置過小

一是新生代GC次數(shù)非常頻繁,增大系統(tǒng)消耗;二是導(dǎo)致大對象直接進入舊生代,占據(jù)了舊生代剩余空間,誘發(fā)Full GC

2)新生代設(shè)置過大

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

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

3)Survivor設(shè)置過小

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

4)Survivor設(shè)置過大

導(dǎo)致eden過小,增加了GC頻率

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

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

1)吞吐量優(yōu)先

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

2)暫停時間優(yōu)先

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

 

最后匯總一下JVM常見配置

堆設(shè)置-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:設(shè)置年輕代大小-XX:NewRatio=n:設(shè)置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個年輕代年老代和的1/4-XX:SurvivorRatio=n:年輕代中Eden區(qū)與兩個Survivor區(qū)的比值。注意Survivor區(qū)有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區(qū)占整個年輕代的1/5-XX:MaxPermSize=n:設(shè)置持久代大小收集器設(shè)置-XX:+UseSerialGC:設(shè)置串行收集器-XX:+UseParallelGC:設(shè)置并行收集器-XX:+UseParalledlOldGC:設(shè)置并行年老代收集器-XX:+UseConcMarkSweepGC:設(shè)置并發(fā)收集器垃圾回收統(tǒng)計信息-XX:+PRintGC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-Xloggc:filename并行收集器設(shè)置-XX:ParallelGCThreads=n:設(shè)置并行收集器收集時使用的CPU數(shù)。并行收集線程數(shù)。-XX:MaxGCPauseMillis=n:設(shè)置并行收集最大暫停時間-XX:GCTimeRatio=n:設(shè)置垃圾回收時間占程序運行時間的百分比。公式為1/(1+n)并發(fā)收集器設(shè)置-XX:+CMSIncrementalMode:設(shè)置為增量模式。適用于單CPU情況。-XX:ParallelGCThreads=n:設(shè)置并發(fā)收集器年輕代收集方式為并行收集時,使用的CPU數(shù)。并行收集線程數(shù)。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 星座| 昔阳县| 南宁市| 边坝县| 桂平市| 东宁县| 民县| 兴安县| 鹿邑县| 临夏县| 延庆县| 芜湖县| 定西市| 府谷县| 额敏县| 容城县| 景东| 沽源县| 溆浦县| 漯河市| 永登县| 永清县| 江华| 怀宁县| 沭阳县| 金华市| 宝清县| 呼伦贝尔市| 兴仁县| 宝应县| 松桃| 玉门市| 蒲城县| 兴和县| 乐东| 乃东县| 青州市| 南木林县| 威海市| 含山县| 舞阳县|