一、boolean 类型

公式

  1. -XX:+(-)某个属性
  2. +:表示开启
  3. -:表示关闭

举例

1、是否打印GC收集细节:

  1. -XX:-PrintGCDetails (开启)
  2. -XX:+PrintGCDetails (关闭)

2、是否使用串行垃圾回收器

  1. -XX:-UseSerialGC(开启)
  2. -XX:+UseSerialGC(关闭)

二、KV设值类型

公式

  1. -XX:属性key=属性值value

举例

1、设置元空间大小

  1. -XX:MetaspaceSize=128m

2、设置 young区到老年区需要活过的次数

  1. -XX:MaxTenuringThreshold=15

3、设置新生代中Eden 和 S0/S1空间的比例

  1. -XX:SurvivorRatio=8
  • 默认-XX:SurvivorRatio=8,即Eden:S0:S1 = 8:1:1。
  • 假如:-XX:SurvivorRatio=4,那么Eden:S0:S1 = 4:1:1,即:SurvivorRatio值就是设置Eden区比例占多少,S0/S1相同。
  • 以下是-XX:SurvivorRatio=4的示例,很明显Eden的容量是from区和 to区的四倍

image.png

4、设置新生代与老年代在 堆结构中的占比

  • 默认-XX:NewRatio=2,年轻代占整个堆的1/3
  • 假如:-XX:NewRatio=4:新生代占1,老年代占4,年轻代占整个堆的1/5
  • NewRatio就是设置老年代的占比,剩下的1给新生代

下图就是-XX:NewRatio=4的示例。
image.png

5、设置初始堆空间

初始堆空间、默认是物理内存的1/64

  1. -XX:InitialHeapSize=10m
  2. 等价于
  3. -Xms10m

6、设置最大堆空间

默认为物理内存的1/4

  1. -XX:MaxHeapSize=1024m
  2. 等价于
  3. -Xmx1024m

7、设置单个线程栈的大小

默认为512K~1024K

  1. -XX:ThreadStackSize=1024m
  2. 等价于
  3. -Xss1024

8、设置年轻代大小

  1. -Xmn1024m

9、设置老年代大小

哈哈,没有这个配置
老年代的大小就是,堆大小 减去 年轻代大小

10、永久代大小设置

什么时候永久代?https://www.yuque.com/wangchao-volk4/fdw9ek/au2gyk#JD7ij

  1. -XX:PermSize=1024m
  2. -XX:MaxPermSize=1024m