【简述】
在Java虚拟机中,垃圾回收器不仅仅只有一种,什么情况下该使用哪种,对性能又有什么样的影响,这都是我们需要了解的。
主要的垃圾回收器有这么几种:
1.串行垃圾回收器
2.并行垃圾回收器
3.CMS回收器
4.G1回收器
【串行垃圾回收器】
串行回收器是指使用单线程进行垃圾回收的回收器,每次回收时,串行回收器只有一个工作线程,对于并行能力较弱的计算机来说,串行回收器的专注性和独占性往往有更好的性能表现,串行回收器可以在新生代和老年代使用,根据作用域不同的堆空间,分为新生代串行回收器和老年代串行回收器。
-XX:+UseSerialGC 参数可以设置使用新生代串行回收器和老年代串行回收器。
【并行回收器(ParNew回收器)】
并行回收器在串行回收器基础上做了改进,它可以使用多个线程同时进行垃圾回收,对于计算能力强的计算机而言,可以有效缩短垃圾回收所需要的实际时间。
ParNew回收器是一个工作在新生代的垃圾回收器,它只是简单的将串行回收器多线程化,它的回收策略和算法与串行回收器一样。
-XX:+UseParNewGC新生代ParNew回收器,老年代则使用串行回收器。ParNew回收器工作时的线程数量可以使用 -XX:ParallelGCThreads参数指定,一般最好和计算机的CPU相当,避免过多的线程影响性能。