內(nèi)存調(diào)優(yōu)
**設(shè)置heap大小
這個(gè)非常重要,通常只要這里設(shè)置夠了,就不會(huì)出現(xiàn)溢出。
''-Xms4096m -Xmx4096m
or
''-Xms4g -Xmx4g
這兩個(gè)值的大小應(yīng)該一樣,這樣減少轉(zhuǎn)換時(shí)初始化時(shí)間
64位一般可支持的最大內(nèi)存是多少?如果物理內(nèi)存為32G(一般為物理內(nèi)存的90%,也就是27~28G)
新生代和老年代的大小
這個(gè)參數(shù)相當(dāng)于設(shè)置等值的最小、最大新生代,NewRatio這個(gè)設(shè)置新、老代比例,NewRatio=1代表,兩個(gè)相等大小
''-Xmn1g
這個(gè)值如果不設(shè)的話,默認(rèn)只有6M
**設(shè)置持久代大小
同理,這兩個(gè)值應(yīng)該是一樣的(jdk7)
''-XX:PermSize=512m -XX:MaxPermSize=512m
JDK8起用這兩個(gè)參數(shù)
''-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m
**設(shè)置code cache
''-XX:ReservedCodeCacheSize=1024m -XX:+UseCompressedOops
GC調(diào)優(yōu)
并發(fā)GC線程設(shè)置
服務(wù)器總的線程數(shù)/jvm實(shí)例數(shù)就行了,如果一臺(tái)服務(wù)器上有4個(gè)jvm。比如2顆6核超線程(超線程后1個(gè)核相當(dāng)于2個(gè)線程)就是24/4=6調(diào),置ParallelGCThreads 時(shí)最大不要超過(guò)6就行了。
Mac筆記本4核8線程,一個(gè)jvm,ParallelGCThreads=CPU 數(shù)量/JVM 數(shù)量
''-XX:ParallelGCThreads=8
CMS基本配置
配置了cms,-XX:+UseParNewGC 這個(gè)參數(shù)就不用設(shè)了,因?yàn)樵O(shè)了cms這個(gè)就自動(dòng)打開(kāi)了
''-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly
日志基本配置
''-Xloggc:/var/log/gc-sms.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails
例子
linkedin的一個(gè)例子如下
// JVM sizing options
''-Xms40g -Xmx40g -XX:MaxDirectMemorySize=4096m -XX:PermSize=256m -XX:MaxPermSize=256m
// Young generation options
''-XX:NewSize=6g -XX:MaxNewSize=6g -XX:+UseParNewGC -XX:MaxTenuringThreshold=2 -XX:SurvivorRatio=8 -XX:+UnlockDiagnosticVMOptions -XX:ParGCCardsPerStrideChunk=32768
// Old generation options
''-XX:+UseConcMarkSweepGC -XX:CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly
// Other options
''-XX:+AlwaysPreTouch -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:-OmitStackTraceInFastThrow
參考:[http://www./11336.html]
我的常用配置
-Xms14g
-Xmx14g
-Xmn5g
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m
-XX:ReservedCodeCacheSize=1024m
-XX:+UseCompressedOops
-XX:+UseConcMarkSweepGC
-XX:ParallelGCThreads=8
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-Xloggc:/var/log/gc-sms.log
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
作者:chenjiangtao 鏈接:https://www.jianshu.com/p/0537162ae6e5 來(lái)源:簡(jiǎn)書 簡(jiǎn)書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。
|