1 | 优化建议: |
通用配置
1、java -Xmx2g -Xms2g -XX:MetaspaceSize=256m -XX:+UseConcMarkSweepGC
并发大,对象小
2、java -Xmx2g -Xms2g -Xmn512m -XX:MetaspaceSize=256m -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=2 -XX:+UseCMSCompactAtFullCollection
并发大,对象大
3、java -Xmx4g -Xms4g -Xmn2g -XX:MetaspaceSize=512m -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=2 -XX:+UseCMSCompactAtFullCollection
核心参数 | 说明 | 默认值 | 备注 |
---|---|---|---|
-Xms | 最小堆内存 | 默认为物理内存的1/64,不会超过1G | |
-Xmx | 最大堆内存 | 默认为物理内存的1/4 | |
-Xmn | 新生代内存大小 | 默认值为-Xmx的3/8,老年代内存则为5/8 优先级较NewRatio高 | |
-XX:NewRatio | 新生代与老生代的内存的比值 | 2 | |
-XX:SurvivorRatio | Eden和2个存活区内存的比值 | 8 | |
-XX:MetaspaceSize | 元空间最小值 | 元空间并不在虚拟机中,而是使用本地内存 | |
-XX:MaxMetaspaceSize | 元空间最大值 | ||
-Xss | 栈大小 | 1M | |
-XX:ParallelGCThreads | 并行收集器的线程数 | 默认为服务器CPU数目 | 此值最好配置与处理器数目相等 同样适用于CMS不用设置 |
-XX:PretenureSizeThreshold | 手动指定对象大小 | 当对象达到指定大小时直接存放到老年代中,由于新生代大多使用复制算法,为了节省复制消耗 | |
-XX:MaxTenuringThreshold | 手动设置对象在新生代中存活年龄(存活次数) | 15 | |
-XX:+UseConcMarkSweepGC | 手动指定老年代使用CMS收集器 | ||
-XX:-CMSParallelRemarkEnabled | 手动配置开启并行标记,节省年轻代标记时间 | 废弃 | |
-XX:CMSInitiatingOccupancyFraction=80 | 手动指定当老年代已用空间达到80%时,触发老年代回收(默认92%) | -1 | |
-XX:+UseCMSCompactAtFullCollection | 在进行Full GC时对内存进行压缩 | JDK1.6以前不需要配置,默认开启 | |
-XX:CMSFullGCsBeforeCompaction=2 | 与XX:+UseCMSCompactAtFullCollection关联使用标识着每经过多少次Full GC | 0 | 触发对内存进行一次压缩,默认是0次 |