JVM 调优

-Xms    -Xmx        配置一样,一般情况为最大内存的80%

-XX:NewSize          新生代初始大小    -XX:MaxNewSize   新生代最大大小  一般情况为整个堆1/3比较合适

-Xmn         新生代内存大小 一般配合-XX:SurvivorRatio使用, 和

-XX:NewRatio=n         设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4

-XX:SurvivorRatio=n  年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5

 1)新生代设置过小    GC次数非常频繁,增大系统消耗;二是导致大对象直接进入旧生代,占据了旧生代剩余空间,诱发Full GC

 2)新生代设置过大   会导致旧生代过小(堆总量一定),从而诱发Full GC;二是新生代GC耗时大幅度增加

 -XX:PermSize -XX:MaxPermSize=n  设置持久代大小(JDK1.8舍弃, 使用元空间)

 -XX:MetaspaceSize -XX:MaxMetaspaceSize 设置元空间

垃圾收集器

 https://blog.csdn.net/wfh6732/article/details/57422967?utm_source=itdadao&utm_medium=referral

-XX:MetaspaceSize=8m -XX:MaxMetaspaceSize=80m

 1G内存 常用配置JDK1.8

 并发收集器,以响应时间优先

JAVA_OPTS="-server -Xms768m -Xmx768m -Xmn125m -XX:SurvivorRatio=8 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Xss128K -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0"

  并行收集器, 以吞吐量优先, 建议用此方式

JAVA_OPTS="-server -Xms768m -Xmx768m -Xmn125m -XX:SurvivorRatio=8 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Xss128K 
-XX:+DisableExplicitGC -XX:+UseParallelGC -XX:ParallelGCThreads=1 -XX:MaxGCPauseMillis=100 -XX:+UseParallelOldGC
-XX:+UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=/tmp/dump.log"

  -XX:+DisableExplicitGC  禁用System.gc(),  如果应用中使用了java nio中的direct memory,那么使用-XX:+DisableExplicitGC一定要小心,存在潜在的内存泄露风险

  -XX:+UseParallelGC 

  -XX:MaxGCPauseMillis=100  设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。

  -XX:ParallelGCThreads=1    配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

  可通过  cat /proc/cpuinfo| grep "processor"| wc -l  查看逻辑CPU个数,

  -XX:+UseParallelOldGC         配置年老代垃圾收集方式为并行收集

  -XX:+UseAdaptiveSizePolicy   设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使      用并行收集器时,一直打开

  -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=/tmp/dump.log  设置dump文件

G1收集器

Windows 亲测, 本人本地用的是jdk1.7, 打开JConsole控制台

 JDK1.7   1.4G 内存配置

JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xmn125m -XX:SurvivorRatio=8 -XX:PermSize=170m -XX:MaxPermSize=340m -Xss128K -XX:+DisableExplicitGC -XX:+UseParallelGC -XX:ParallelGCThreads=1 -XX:MaxGCPauseMillis=100 -XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=/tmp/dump.log"

参考https://www.cnblogs.com/zhangfengshi/p/11343102.html

-server -Xms2G -Xmx2G -Xmn512m
-XX:SurvivorRatio=6 -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Xss256K -XX:-XX:+DisableExplicitGC -XX:+UseParallelGC -XX:ParallelGCThreads=2 -XX:MaxGCPauseMillis=100 -XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.log

原文地址:https://www.cnblogs.com/eason-d/p/9264330.html