方法区:之前称为永久代
,后来又称为Metaspace
。
https://blogs.oracle.com/poonam/understanding-g1-gc-logs
JDK9用的是G1,之前是CMS
ZGC太新了。
G1:主要关注的是停顿时间
堆内存>6G时
用G1可以<500ms,
可以设置时间
高并发,young到old的晋升很快时,推荐G1
gcviewer工具来看:
假如希望最大停顿时间200ms:
G1追求的是低停顿。
G1会动态调整young和old大小。
G1注意:
(1)一定不要设置young区大小或比例;
(2)停顿时间不要太严格(不能太小)。一般G1小于500ms,但是不要小于100ms或200ms。一般使用100ms或200ms都是可以的。100ms<目标<500ms
减少使用全局变量和大对象;
· 调整新生代的大小到最合适;
· 设置老年代的大小为最合适;
· 选择合适的GC收集器