1、JVM的內(nèi)存
JVM的內(nèi)存 = 年輕代(Young) + 年老代(Tenured) + 持久代
-Xms: 設(shè)置初始JVM內(nèi)存大小
-Xmx: 設(shè)置最大JVM內(nèi)存大小
一般講Xms, Xmx設(shè)置成一樣的大小,避免超過Xms后,內(nèi)存重新整理;另外,由于由于jvm進(jìn)程本身會(huì)占用內(nèi)存空間,所以jvm實(shí)際占用的內(nèi)存空間會(huì)比設(shè)置的大
-Xmn: 設(shè)置年輕代內(nèi)存大小(一般設(shè)置為Xmx的1/3)
年輕代包括兩個(gè)區(qū),Edgen 和 Survivor 區(qū),Suvrvior區(qū)還被平均分成了兩塊 from space 和 to space,默認(rèn)情況下 Edgen與2個(gè)Survior大小比例 8:2, 即一個(gè)survivor占據(jù)
1/10的年輕代內(nèi)存大小。可以通過-XX:SurviorRatio=X 修改Edgen與Survior的大小比例
老年代的大小無法設(shè)置,等于 JVM內(nèi)存-年輕代-持久代;如果未指定-Xmn參數(shù),可以通過-XX:NewRatio=X設(shè)置年輕代和年老代的比例,默認(rèn)1:2, 即年輕代占據(jù)除去持久代內(nèi)存的1/3
-XX:PermSize=256M: 持久代初始內(nèi)存大小
-XX:MaxPermSize=512M: 最大持久代內(nèi)存大小,一般不需要設(shè)置很大,可以在程序運(yùn)行一段時(shí)間后,通過jconsole進(jìn)行查看,從而調(diào)整持久代的初始值及最大值
2、其它參數(shù)
-server: 在linux上默認(rèn)是開啟的,windows上要手動(dòng)設(shè)置
-XX:+UseG1GC: -Xmx設(shè)置超過4g時(shí),建議開啟;一般采用 -XX:+UseConcMarkSweepGC
垃圾回收期,有個(gè)名詞STW: stop the world, 就是垃圾回收器在執(zhí)行回收動(dòng)作時(shí),JVM會(huì)停止所有動(dòng)作,即不做任何其它的事情,如果時(shí)間較長(zhǎng),將出現(xiàn)程序停止現(xiàn)象
-Djava.awt.headless=true: 在服務(wù)器上使用時(shí),一般開啟
3、舉個(gè)例子
1)JAVA_OPTS="$JAVA_OPTS -Xms6g -Xmx6g -Xmn2g -Xss1024K-XX:PermSize=256M -XX:MaxPermSize=1g -Djava.awt.headless=true -XX:+UseG1GC "
2)JAVA_OPTS="$JAVA_OPTS -Xms2g -Xmx2g -Xmn700M -Xss512K -XX:PermSize=256M -XX:MaxPermSize=512M -Djava.awt.headless=true -XX:+UseConcMarkSweepGC"
新聞熱點(diǎn)
疑難解答
圖片精選