java性能调优

java性能优化:

核心:减少或很少full GC次数,降低 Young GC次数

GC相关参数:

-server
-Xms: 堆容量初始值
-Xmx: 堆容量最大值
-Xmn: 新生代容量
-Xss :每个线程虚拟机栈及堆栈的大小,此配置将会影响此进程中并发线程数的大小(client模式128KB、server模式256K)
-XX:SurvivorRatio=ratio: 幸存区比例
-XX:InitialSurvivorRatio=ratio:幸存区比例(动态)
-XX:MetaspaceSize=: 元空间初始值(1.8jdk)
-XX:MaxMetaspaceSize=: 元空间最大值(1.8jdk)
-XX:PermSize=: 元空间初始值(1.7jdk)
-XX:MaxPermSize:= 元空间最大值(1.7jdk)
-XX:+UseCMSInitiatingOccupancyOnly :使用手动定义初始化定义开始CMS收集
-XX:CMSInitiatingOccupancyFraction=70 :当老年代达到70%时,触发CMS垃圾回

垃圾垃圾搜集器选择参数:

-XX:+UseSerialGC:开启此参数使用serial & serial old搜集器(client模式默认值)。
-XX:+UseParNewGC:开启此参数使用ParNew & serial old搜集器。
-XX:+UseConcMarkSweepGC:开启此参数使用ParNew & CMS(serial old为替补)搜集器。
-XX:+UseParallelGC:开启此参数使用parallel scavenge & parallel old搜集器(server模式默认值)。
-XX:+UseParallelOldGC:开启此参数在年老代使用parallel old搜集器(该参数在JDK1.5之后已无用)。

打印gc相关命令:

-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCCause
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCApplicationConcurrentTime
-Xloggc:gc.log :输出文件

1.8jdk以上:
8G以上内存参数设置:
set “JAVA_OPTS=-Xms8192m -Xmx8192m -Xmn4096m -Xss512k -XX:SurvivorRatio=6 -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70”
8G以下内存参数设置:
set “JAVA_OPTS=-Xms4096m -Xmx4096m -Xmn2048m -Xss256k -XX:SurvivorRatio=6 -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70”

1.8jdk以下:
8G以上内存参数设置:
set “JAVA_OPTS=-Xms8192m -Xmx8192m -Xmn2048m -Xss512k -XX:SurvivorRatio=6 -XX:MetaspaceSize=512M -XX:MaxPermSize=512M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70”
8G以下内存参数设置:
set “JAVA_OPTS=-Xms4096m -Xmx4096m -Xmn2048m -Xss256k -XX:SurvivorRatio=6 -XX:PermSize=256M -XX:MaxPermSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70”

以上垃圾回收器采用ParNew 和 CMS,年轻代采用ParNew ,老年代采用CMS

你可能感兴趣的:(java,jvm)