垃圾收集器有独占式的串行收集器,也有加了多线程的并行收集器。如何选择一个合适的垃圾收集器主要参考的就是GC策略的指标。包括以下几个部分:
1.吞吐量:
指在应用程序的生命周期内,应用程序所花费的时间和系统总运行时间的比值。 举个例子,如果系统运行了 100min,GC 耗时 1min,那么系统的吞吐量就是(100-1)/100=99%。
2.垃圾回收器负载:
和吞吐量正好相反,垃圾回收器负载指垃圾回收器耗时与系统运行总时间的比值。
3.停顿时间:
指垃圾回收器正在运行时,应用程序的暂停时间。对于独占回收器而言,停顿时间可能会比较长。使用并发的回收器时,由于垃圾回收器和应用程序交替运行,程序的停顿时间会变短,但是,由于其效率很可能不如独占垃圾回收器,故系统的吞吐量可能会较低。
4.垃圾回收频率:
指垃圾回收器多长时间会运行一次。一般来说,对于固定的应用而言,垃圾回收器的频率应该是越低越好。
5.反应时间:
指当一个对象被称为垃圾后多长时间内,它所占据的内存空间会被释放。
6.堆分配:
不同的垃圾回收器对堆内存的分配方式可能是不同的。一个良好的垃圾收集器应该有一个合理的堆内存区间划分。