JVM启动参数格式
| 格式 | 说明 | 举个 | 备注 |
|---|
| - | 以-开头为标准参数,所有的JVM都要实现这些参数,并向后兼容 | -server;-client | |
| -D | 设置系统属性 | | |
| -X | 以-X开头为非标准参数,基本都是传给JVM的,默认JVM实现这些参数的功能,但是并不保证所有的JVM都实现这些参数的功能,并且不保证向后兼容,java -X 可以查看当前JVM支持的非标准参数 | -Xmixed:混合模式执行(默认); -Xint:仅解释模式执行,-Xmx;4096m:指定堆内存的最大大小 | -X:±Flags形式,±是对布尔值进行开关,-X:key-value形式,指定某个选项的值 |
| - XX | 以-XX开头的为非稳定参数 ,专门用于控制JVM的行为,跟具体的JVM实现有关,随时可能在下个版本取消 | -XX:+UseG1GC -XX:ParallelGCThreads=4 | -XX:±Flags形式,±是对布尔值进行开关,-XX:key-value形式,指定某个选项的值 |
JVM启动参数类型
- 系统属性参数
- 运行模式参数
- 堆内存设置参数
- GC设置参数
- 分析诊断参数
- JavaAgent参数
| 命令 | 说明 | 类型 | 参考 |
|---|
| -cp | | | |
| -server | JVM使用server模式运行,server和client模式的区别在于使用的编译器不同,client模式使用的是轻量级的c1编译器,启动更快,但是运行时的性能和内存管理效率不如server模式,server模式使用的是较为重量级的c2编译器,编译更加彻底,虽然启动比较慢,但是性能比较好。 | 运行模式参数 | |
| -Xmx | 指定最大堆内存是4G(机器配置是4核8G) | 堆内存设置参数 | |
| -Xms | 指定堆内存的初始大小是4G。一般需要保持-Xms和-Xmx一致,否则可能刚刚启动就来几个FullGC | 堆内存设置参数 | |
| -verbose:gc | 在虚拟机发生内存回收时在输出设备显示信息,该参数用来监视虚拟机内存回收的情况。 | 分析诊断参数 | |
| -XX:+AlwaysPreTouch | JVM将-Xms指定的堆内存中每个字节都写入’0’ | 堆内存设置参数 | 看别人的文章写的,jvm8不支持= =!https://www.jikewenku.com/11377.html |
| -XX:+UnlockExperimentalVMOptions | 解锁实验参数 | | |
| -XX:+UseG1GC | 指定垃圾回收器 | GC设置参数 | |
| -XX:MaxGCPauseMillis=60 | 设置G1收集过程目标时间不过,只是期望值 | GC设置参数 | https://tech.meituan.com/2016/09/23/g1.html |
| -XX:+HeapDumpOnOutOfMemoryError | 当JVM发生OOM时,自动生成DUMP文件。 | 分析诊断参数 | |
| -XX:HeapDumpPath=$logPath | dump日志地址 | 分析诊断参数 | |
| -XX:+PrintGCDateStamps | 日志中添加日期标志;日志输出示例:2014-01-03T12:08:38.102-0100: [GC 66048K->53077K(251392K), 0,0959470 secs | GC设置参数 | |
| -XX:ParallelGCThreads=4 | STW期间,并行GC线程数 | GC设置参数 | |
| -XX:ConcGCThreads=1 | 并发标记阶段,并行执行的线程数 | GC设置参数 | |
| -XX:G1ReservePercent=10 | 设置作为空闲空间的预留内存百分比,以降低OOM的风险。默认值是 10%。增加或减少百分比时,请确保对总的 Java 堆调整相同的量。 | GC设置参数 | |
| -XX:-OmitStackTraceInFastThrow | 开启这个配置,抛出异常比较快,但是没有堆栈信息不利于排查 | | https://www.jianshu.com/p/e87d166380eb |
| -XX:+UseCGroupMemoryLimitForHeap | 启用对docker容器的支持 | | |
| -Xloggc:${LOGPATH}/gc.log | gc日志 | GC设置参数 | |
exec java -cp .:conf/*:lib/*
-server -Xmx4096m -Xms4096m -verbose:gc -XX:+AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=60 -XX:+PrintGCDetails -XX:+HeapDumponOutOfMemoryError -XX:HeapDumpPath=$logPath -XX:+PrintGCDateStamps -XX:ParallelGCThreads=4 -XX:ConcGCThreads=1 -XX:G1ReservePercent=10 -XX:-OmitStackTraceInFastThrow -XX:+UseCGroupMemoryLimitForHeap -Xloggc:${LOGPATH}/gc.log
${SYSTEM_PROPS}
com.xxxx.service.business.xxxApplication >>${LOGPATH}/xxx.log
2>&1