JVM各参数的含义

2024-07-05 13:27:35 浏览数 (2)

-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设置最大值,MinMetaspaceFreeRatioMaxMetaspaceFreeRatio控制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/

0 人点赞