-Xms
- 设置堆的初始值
-Xmx
- 设置堆的最大值
-Xss
- 设置线程栈(thread stack)的大小 同-XX:ThreadStackSize
- 默认大小为1M左右,设置时值不能小于最小值144k和最大值1g
- 线程栈用于保存方法的参数、本地变量、返回结果
- 影响线程虚拟机栈的栈帧(stack frame)数量,即方法调用的层级深度;每调用一个方法,新增一个栈帧
-Xmn
- 设置年轻代的大小
- -XX:NewSize 设置年轻代的初始值 -XX:MaxNewSize 设置年轻代的最大值
-XX:NewRatio
- 设置年轻代和老年代的比例,若值为3,则表示年轻代:老年代=1:3
-XX:SurvivorRatio
- 设置年轻代Eden区和Survivor区的比例
-XX:MaxTenuringThreshold
- 对象进入老年代的阈值(年龄),经过一次youngGC仍然存活,年龄会加1
-XX:PermSize
-XX:MaxPermSize
- 设置永久代的初始值和最大值
- java8以后已被元数据区取代,使用堆外内存,主要存放类的信息、常量、静态变量以及JIT编译后的代码。
- -XX:MetaspaceSize可用于设置元数据空间的初始值,MaxMetaspaceSize设置最大值,MinMetaspaceFreeRatio和MaxMetaspaceFreeRatio控制GC后元数据区的空闲比例的最小值和最大值,不在这两个值范围内,将触发元数据区的内存扩张
参考文献
https://www.baeldung.com/jvm-configure-stack-sizes
https://www.herongyang.com/JVM/Stack-Overflow-What-Is-JVM-Stack.html
https://www.cnblogs.com/zhaoyue1215/p/17223620.html
https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html
https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/jvm-options-java-parameters-command-line-environment-variable-list-xms-xmx-memory
https://cloud.tencent.com/developer/article/1665548
https://www.baeldung.com/java-permgen-metaspace
https://examples.javacodegeeks.com/java-metadata-gc-threshold/