查看Java8默认的jvm参数
java -XX:+PrintFlagsFinal
2核2g
-server
-Xmx1g
-Xms1g
-Xmn512m
-Xss256k
-XX:MetaspaceSize=64m
-XX:MaxMetaspaceSize=128m
-XX:+UseG1GC
-XX:InitiatingHeapOccupancyPercent=35
这个参数是说,当堆内存的使用率达到30%之后就会自动启动G1的并发垃圾回收,开始尝试回收一些垃圾对象。默
认值是45%,高并发应用可以调低了一些,也就是提高了GC的频率,但是避免了垃圾对象过多,一次垃圾回收耗
时过长的问题
-XX:MaxGCPauseMillis=200
-XX:ConcGCThreads=1
-XX:TargetSurvivorRatio=90
-XX:MaxDirectMemorySize=512m 最大堆外内存大小
-XX:-OmitStackTraceInFastThrow 避免出现短的异常类信息
-XX:+ExplicitGCInvokesConcurrent 无论什么时候调用系统GC,都执行CMS GC,而不是Full GC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps 输出GC的时间戳,以日期的形式
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-XX:+PrintTenuringDistribution 每次 GC 打印 Tenuring Threshold 的值
-XX:+PrintGCApplicationStoppedTime 打印GC时应用程序的停止时间
-XX:+PrintAdaptiveSizePolicy
-Xloggc:/opt/logs/gc.log
-XX:+UseGCLogFileRotation
启用日志文件的轮转,当日志文件达到指定的大小限制时,将关闭该文件并创建一个新的日志文件。这样可以确保GC日志不会占用过多的磁盘空间
-XX:NumberOfGCLogFiles=10
设置要保留的GC日志文件的最大数量。当达到最大数量时,最旧的日志文件将被删除
-XX:GCLogFileSize=100M
设置每个GC日志文件的大小。当文件达到此大小时,将关闭该文件并创建一个新的日志文件。该值以兆字节(M)为单位指定
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/logs/heapdump.hprof
-Djava.awt.headless=true
-Dsun.net.client.defaultConnectTimeout=10000
-Dsun.net.client.defaultReadTimeout=30000
-Dfile.encoding=UTF-8