1,jvm调优,调整jvm内存比例,同时减少youngGc和fullGc次数。也就是增大年轻代比例,尽可能减少放到老年代。虽然回收的东西大小是一样的,但是附带的东西是不一样的,就像一段路程,公交车走走停停肯定慢啊。 再者 垃圾收集器 使用的是jdk1.8默认的,即JDK1.8默认的垃圾收集器为:PS MarkSweep 和 PS Scavenge. 前者可以看做是串行收集器,使用标记清除算法,后者是并行回收器,使用复制清除。这两个是年轻代用的。还有个Parallel Old 是老年代用的并行回收器,使用标记整理算法。 重点:被问到使用了哪种收集器时,不要回答固定哪个,因为不同jdk版本 不同的区是有不同的收集器的。而且还是可以指定使用哪种收集器的。 就回答jdk1.8 年轻代用parallel scavenge, 老年代用parallel old。连个都是并行回收器。此外,还有cms,G1回收器。当前最流行时G1,可以指定stop the world的最大时间。
至于算法,幸存1区和2区肯定是复制清除。老年代使用的是标记整理,主要防止产生碎片,也不用需要提供额外空间,慢点也无所谓,并行搞呗。伊甸区没研究过。使用哪种算法要看使用了哪种回收器,也不能一概而论。