JVM参数
PC(寄存器)
虚拟机栈
LV(局部变量表), OS(操作数栈), DL(动态链接), RA(返回地址)
分类 | 参数 | 默认 | 作用 | 建议 |
---|---|---|---|---|
堆区 | -Xss2m | 512KB | 线程可用最大虚拟机栈大小,决定了函数调用的最大深度 | 否 |
堆区
新生代(eden(TLAB), from/to), 老年代
分类 | 参数 | 默认 | 作用 | 建议 |
---|---|---|---|---|
堆空间大小 | -Xms10m | 物理内存大小/64 | min堆大小 | 是 |
堆空间大小 | -Xmx10m | 物理内存大小/4 | max堆大小 | 是 |
新生代大小 | -Xmn10m | 新生代内存大小,和-XX:NewRatio=2一起设置,这个参数失效 | 否 | |
老年代:新生代 | -XX:NewRatio=2 | 2 | 老年代:新生代=2 | 否 |
eden:survivor | -XX:SurvivorRatio=8 | 自适应 | eden:s0:s1=8:1:1 | 否 |
新生代自适应 | -XX:+UseAdaptiveSizePolicy | 开启 | +号开启自适应,-号关闭自适应 | 是。大流量、低延迟系统 建议关闭 |
年龄计数器 | -XX:MaxTenuringThreshold=15 | 15 | 年龄计数器,控制survivor区到老年代 | 否 |
-XX:+HandlePromotionFailure | 开启 | 开启非安全转移 | 否 | |
TLAB启用 | -XX:+UseTLAB | 开启 | +号开启TLAB | 否 |
TLAB/Eden | -XX:TLABWasteTargetPercent | Eden的1% | TLAB占用Eden百分比 | 否 |
参数值 | -XX:+PrintFlagsInitial | 所有参数的默认初始值 | 否 | |
参数值 | -XX:+PrintFlagsFinal | 所有参数的最终值,赋值值 | 否 | |
GC | -XX:+PrintGCDetails | 打印GC细节,常用 | 否 | |
GC | -XX:+PrintGC | 打印GC简略信息 | 否 | |
GC | -verbose:gc | 打印GC简略信息 | 否 | |
逃逸分析 | -XX:+DoEscapeAnalysis | jdk6u23=+默认开启 | 逃逸分析 | 否 |
逃逸分析 | -XX:+PrintEscapeAnalysis | 打印逃逸分析筛选结果 | 否 | |
标量替换 | -XX:+EliminateAllocations | 开启 | 标量替换 | 否 |
JVM运行模式 | -server | 64位jvm默认server模式 | server模式,server模式下才有逃逸分析 | 否 |
方法区
永久代(jdk7-)/元空间(jdk8=+)
分类 | 参数 | 作用 | 建议 |
---|---|---|---|
jdk7=-,永久代 | -XX:PermSize=100m |
初始永久代大小 | 否 |
jdk7=-,永久代 | -XX:MaxPermSize=100m |
max永久代大小 | 否 |
jdk8=+,元空间 | -XX:MetaspaceSize=100m |
初始元空间大小,警戒线,设置较大的值防止空间不够频繁FGC | 是 |
jdk8=+,元空间 | -XX:MaxMetaspaceSize=100m |
最大元空间大小,默认-1 | 否 |
参数
# 打印命令行参数。可以获取默认GC
java -XX:+PrintCommandLineFlags -version