JVM性能优化总结
JVM优化的本质
基础JVM知识
为什么要区分老年代和年轻代?
方法区会不会被垃圾回收?
什么情况下的对象可以被垃圾回收?
因为方法的局部变量,和类的静态变量,才可以作为gc roots
有哪些垃圾回收算法?
新生代的复制算法
新生代因为对象生命周期短,99%的对象都可以一次性清理,不需要被复制进入S区
老年代的标记整理算法
标记整理算法至少比复制算法慢10倍,因为老年代存活对象多,扫描所有gc roots耗时多,清理垃圾对象后,还要进行内存碎片整理,也要耗费时间
老年代如果采用复制算法,可能90%的对象都无法回收,都要被复制整理到另一处,性能消耗太大
ParNew + CMS的组合如何尽量保证系统只ygc不FGC?
1,首先机器内存要起码4核8G
2,堆分配4G,新生代3G,两个S区各400M
防止新生代对象放不下S区进入老年代,防止S区内对象触发动态年龄判断进入老年代