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è)置每個(gè)線程的堆棧大小為128K
-XX:NewSize=4:設(shè)置年輕代大小為4
-XX:NewRatio=4:設(shè)置年輕代(包括Eden和兩個(gè)Survivor區(qū))與老年代(除去持久代)的比值為4,則年輕代與年老代所占比值為1:4,年輕代占整個(gè)堆棧的1/5
-XX:SurvivorRatio=4:設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值.設(shè)置為4,則兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:4,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/6
-XX:MaxPermSize=16m:設(shè)置持久代大小為16m.
-XX:PretenureSizeThreshold=n,大于n的對(duì)象直接放入老年代
-XX:MaxTenuringThreshold=0:設(shè)置垃圾最大年齡.如果設(shè)置為0的話,則年輕代對(duì)象不經(jīng)過(guò)Survivor區(qū),直接進(jìn)入年老代.
-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集.
整個(gè)堆大小 = 年輕代大小 + 老年代大小 + 持久代大小。
二、收集器設(shè)置
-XX:+UseSerialGC:設(shè)置串行收集器
-XX:+UseParallelGC:設(shè)置并行收集器
-XX:+UseParalledlOldGC:設(shè)置并行年老代收集器
-XX:+UseConcMarkSweepGC:設(shè)置并發(fā)收集器
三、垃圾回收統(tǒng)計(jì)信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
四、并行收集器設(shè)置
-XX:ParallelGCThreads=n:設(shè)置并行收集器收集時(shí)使用的CPU數(shù).并行收集線程數(shù).
-XX:MaxGCPauseMillis=n:設(shè)置并行收集最大暫停時(shí)間
-XX:GCTimeRatio=n:設(shè)置垃圾回收時(shí)間占程序運(yùn)行時(shí)間的百分比.公式為1/(1+n)
五、并發(fā)收集器設(shè)置
-XX:+CMSIncrementalMode:設(shè)置為增量模式.適用于單CPU情況.
-XX:ParallelGCThreads=n:設(shè)置并發(fā)收集器年輕代收集方式為并行收集時(shí),使用的CPU數(shù).并行收集線程數(shù).
下面舉個(gè)例子:
假設(shè)有個(gè)名為T(mén)estMem.java 的文件
javac TestMem.java java -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 TestMem
-Xms20M:JVM中Java堆的初始大小為20M。(包括新生代和老年代)
-Xmx20M:JVM中Java堆的最大大小為20M,也就是說(shuō)不可擴(kuò)展。(包括新生代和老年代)
-Xmn10M:新生代的大小為10M
-XX:+PrintGCDetails:打印詳細(xì)GC信息
-XX:SurvivorRatio=8:新生代中一個(gè)Enden與一個(gè)Survivor區(qū)的空間比例是8:1,則兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:8,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/10
知道上面的的flag信息之后,我們可以得到以下信息:
java堆的總大小為20M = 20 * 1024K = 20480K
新生代的大小:10M = 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è)置詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- Java虛擬機(jī)JVM優(yōu)化實(shí)戰(zhàn)的過(guò)程全記錄
- 基于jvm java內(nèi)存區(qū)域的介紹
- Java 虛擬機(jī)(JVM)之基本概念詳解
- Java JVM原理與調(diào)優(yōu)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- JVM(Java虛擬機(jī))簡(jiǎn)介(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
- JVM教程之Java代碼編譯和執(zhí)行的整個(gè)過(guò)程(二)
- Java JVM虛擬機(jī)運(yùn)行機(jī)制
- 詳解Java中的JDK、JRE、JVM
相關(guān)文章
淺析java中String類(lèi)型中“==”與“equal”的區(qū)別
這篇文章主要介紹了淺析java中String類(lèi)型中“==”與“equal”的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Java 將List中的實(shí)體類(lèi)按照某個(gè)字段進(jìn)行分組并存放至Map中操作
這篇文章主要介紹了Java 將List中的實(shí)體類(lèi)按照某個(gè)字段進(jìn)行分組并存放至Map中操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10mybatisplus實(shí)現(xiàn)自動(dòng)填充時(shí)間的項(xiàng)目實(shí)踐
在數(shù)據(jù)庫(kù)操作中,頻繁設(shè)置創(chuàng)建時(shí)間和更新時(shí)間字段非常繁瑣,通過(guò)使用MyBatis-Plus的自動(dòng)填充功能,可以簡(jiǎn)化操作,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2024-10-10Java實(shí)現(xiàn)隨機(jī)抽獎(jiǎng)的三種方法
在Java中實(shí)現(xiàn)隨機(jī)抽獎(jiǎng)的方法,通常我們會(huì)使用java.util.Random類(lèi)來(lái)生成隨機(jī)數(shù),然后基于這些隨機(jī)數(shù)來(lái)選擇中獎(jiǎng)?wù)?以下將給出幾種常見(jiàn)的隨機(jī)抽獎(jiǎng)實(shí)現(xiàn)方式,需要的朋友可以參考下2024-09-09mybatis 映射文件中if標(biāo)簽判斷字符串相等的兩種方式
這篇文章主要介紹了mybatis 映射文件中if標(biāo)簽判斷字符串相等的方式,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06WebSocket無(wú)法注入屬性的問(wèn)題及解決方案
這篇文章主要介紹了WebSocket無(wú)法注入屬性的問(wèn)題及解決方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09關(guān)于Intellij idea 報(bào)錯(cuò):Error : java 不支持發(fā)行版本5的問(wèn)題
這篇文章主要介紹了關(guān)于Intellij idea 報(bào)錯(cuò):Error : java 不支持發(fā)行版本5的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02springboot2.x解決運(yùn)行順序及Bean對(duì)象注入順序的問(wèn)題
這篇文章主要介紹了springboot2.x解決運(yùn)行順序及Bean對(duì)象注入順序的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01