JVM中的flag設(shè)置詳解
本文研究的主要是JVM中的flag設(shè)置詳解的相關(guān)內(nèi)容,具體介紹如下。
一、堆大小設(shè)置
-Xmx3550m:設(shè)置JVM最大可用內(nèi)存為3550M。
-Xms3550m:設(shè)置JVM初始可用內(nèi)存為3550M。
-Xmn2g:設(shè)置年輕代大小為2G。
-Xss128k:設(shè)置每個線程的堆棧大小為128K
-XX:NewSize=4:設(shè)置年輕代大小為4
-XX:NewRatio=4:設(shè)置年輕代(包括Eden和兩個Survivor區(qū))與老年代(除去持久代)的比值為4,則年輕代與年老代所占比值為1:4,年輕代占整個堆棧的1/5
-XX:SurvivorRatio=4:設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值.設(shè)置為4,則兩個Survivor區(qū)與一個Eden區(qū)的比值為2:4,一個Survivor區(qū)占整個年輕代的1/6
-XX:MaxPermSize=16m:設(shè)置持久代大小為16m.
-XX:PretenureSizeThreshold=n,大于n的對象直接放入老年代
-XX:MaxTenuringThreshold=0:設(shè)置垃圾最大年齡.如果設(shè)置為0的話,則年輕代對象不經(jīng)過Survivor區(qū),直接進入年老代.
-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集.
整個堆大小 = 年輕代大小 + 老年代大小 + 持久代大小。

二、收集器設(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ù).
下面舉個例子:
假設(shè)有個名為TestMem.java 的文件
javac TestMem.java java -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 TestMem
-Xms20M:JVM中Java堆的初始大小為20M。(包括新生代和老年代)
-Xmx20M:JVM中Java堆的最大大小為20M,也就是說不可擴展。(包括新生代和老年代)
-Xmn10M:新生代的大小為10M
-XX:+PrintGCDetails:打印詳細GC信息
-XX:SurvivorRatio=8:新生代中一個Enden與一個Survivor區(qū)的空間比例是8:1,則兩個Survivor區(qū)與一個Eden區(qū)的比值為2:8,一個Survivor區(qū)占整個年輕代的1/10
知道上面的的flag信息之后,我們可以得到以下信息:
java堆的總大小為20M = 20 * 1024K = 20480K
新生代的大?。?0M = 10 * 1024K = 10240K
eden space:10240K * 8/10 = 8192K
from space:10240K * 1/10 = 1024K
to space:10240K * 1/10 = 1024K
老年代的大?。?0M - 10M = 10M = 10240K
總結(jié)
以上就是本文關(guān)于JVM中的flag設(shè)置詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
關(guān)于JSON.toJSONString()和Gson.toJson()方法的比較
本文介紹了兩種將Java對象轉(zhuǎn)換為JSON字符串的方法:阿里的`JSON.toJSONString()`和谷歌的`Gson.toJson()`,通過一個示例,展示了當使用繼承關(guān)系且子類覆蓋父類字段時,`Gson`會報錯,而`JSON`可以正常運行,作者建議在處理JSON相關(guān)操作時使用阿里的`JSON`類2024-11-11
springboot使用kafka推送數(shù)據(jù)到服務(wù)端的操作方法帶認證
在使用Kafka進行數(shù)據(jù)推送時,遇到認證問題導(dǎo)致連接失敗,本文詳細介紹了Kafka的認證配置過程,包括配置文件的引入和參數(shù)設(shè)置,實際測試表明,需要正確配置sasl.jaas.config以及其他認證參數(shù),探討了配置文件是否可以同時存在多個配置塊的可能性,并提出了實際操作中的注意事項2024-11-11
Springboot整合Redis實現(xiàn)超賣問題還原和流程分析(分布式鎖)
最近在研究超賣的項目,寫一段簡單正常的超賣邏輯代碼,多個用戶同時操作同一段數(shù)據(jù)出現(xiàn)問題,糾結(jié)該如何處理呢?下面小編給大家?guī)砹薙pringboot整合Redis實現(xiàn)超賣問題還原和流程分析,感興趣的朋友一起看看吧2021-10-10

