JVM体系结构与GC调优(二)

jvm支持的垃圾收集器组合

JVM体系结构与GC调优(二)

组合选择的标准

  • 吞吐量=应用运行时间/总时间
    关注gc总耗时
  • 暂停时间
    关注每次gc的耗时

组合选择的场景

JVM体系结构与GC调优(二)

JVM体系结构与GC调优(二)

堆的调优

  • 一般来说,堆越大越好(gc频率小,但单次gc时间变长)
  • 设置参数 -xms 堆的最小值 -xmx 堆的最大值 每次调整堆大小都会发生fullgc

思考:如果为了不发生fullgc,是否就总是设置-xms = -xmx

答案:不是。在设计堆的大小时。设置-xms为预期堆内存。 -xmx设计为比-xms更大的数(前提是内存允许)。这样既可以降低堆调整的频率,还可以提高系统的负载能力

新生代调优--大小

  • 增大eden区。(减少gc频率,不一定增大gc时间。因为时间跟存活对象成正比)

新生代调优--晋升

  • 尽可能让对象停留在survivor中。降低majorgc的频率
  • 但是要避免对象在survivor中不断复制
  • 设置对象晋升年龄的极限值,没熬过一次gc,年龄就+1。到达极限值就晋升(但不绝对)

旧生代调优

  • 调优尽量先调新生代
  • 平衡老年代的大小,不能太大或太小
  • 直接加cpu,来的最快

调优工具

JVM体系结构与GC调优(二)

JVM体系结构与GC调优(二)

相关推荐