jvm支持的垃圾收集器组合
组合选择的标准
- 吞吐量=应用运行时间/总时间
关注gc总耗时 - 暂停时间
关注每次gc的耗时
组合选择的场景
堆的调优
- 一般来说,堆越大越好(gc频率小,但单次gc时间变长)
- 设置参数 -xms 堆的最小值 -xmx 堆的最大值 每次调整堆大小都会发生fullgc
思考:如果为了不发生fullgc,是否就总是设置-xms = -xmx
答案:不是。在设计堆的大小时。设置-xms为预期堆内存。 -xmx设计为比-xms更大的数(前提是内存允许)。这样既可以降低堆调整的频率,还可以提高系统的负载能力
新生代调优--大小
- 增大eden区。(减少gc频率,不一定增大gc时间。因为时间跟存活对象成正比)
新生代调优--晋升
- 尽可能让对象停留在survivor中。降低majorgc的频率
- 但是要避免对象在survivor中不断复制
- 设置对象晋升年龄的极限值,没熬过一次gc,年龄就+1。到达极限值就晋升(但不绝对)
旧生代调优
- 调优尽量先调新生代
- 平衡老年代的大小,不能太大或太小
- 直接加cpu,来的最快
调优工具