JDK 1.8 jvm 不同参数设置下对比

情形一

设置参数-Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m
通过命令jmap -heap 27298查看 jvm 内存使用情况

image.png

  • 没设置-XX:NewSize-XX:MaxNewSize,默认二者相等,即图中 b = c
  • a = b + d,即:堆区 = 新生代 + 老年代
  • e = 2,老年代 : 新生代 = 2 :1,即图中 d : b = 2 : 1
  • g = h = 256,与设置参数中-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m一致
  • f = 8,但 k : n : m != 8 : 1 : 1

情形二

设置参数-Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:-UseAdaptiveSizePolicy

image.png

  • 参数中设置了 -XX:-UseAdaptiveSizePolicy,但是 k : n : m != 8 : 1 : 1

HotSpot VM里,ParallelScavenge系的GC(UseParallelGC / UseParallelOldGC)默认行为是SurvivorRatio如果不显式设置就没啥用。显式设置到跟默认值一样的值则会有效果。
因为ParallelScavenge系的GC最初设计就是默认打开AdaptiveSizePolicy的,它会自动、自适应的调整各种参数。

通过命令jinfo -flags pid 查看默认配置的 GC 算法,发现为UseParallelGC

image.png

情形三

设置参数-Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8

image.png

  • 参数中设置了 -XX:SurvivorRatio=8, k : n : m = 8 : 1 : 1

情形四

设置参数-Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8 -XX:-UseAdaptiveSizePolicy

image.png

  • 参数中设置了 -XX:SurvivorRatio=8 -XX:-UseAdaptiveSizePolicy, k : n : m = 8 : 1 : 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。