GC的主要特点:
一、精确
1.所有内存中不可访问到的对象会被可靠的回收。
2. 所有内存对象可被移动,允许内存压缩,从而消除内存碎片,提高内存可用性。
二、Generational Copying Collection
1.与不是代垃圾回收器相比,加快了分配速度和整体回收效率;
2.减少了用户能感知到的垃圾收集频率和时间。
基于一个程序中大部分对象(大于95%)的生命周期很短这一事实,可在内存的某个区域放置新创建的对象,由于分配给新对象的空间是连续的,类似于栈的空间,所以分配速度很快,垃圾收集器要做的是更新指针和检查这块区域是否溢出。如果该区域已满,大部分对象已死,对于已死的对象不用做任何清理工作,只要把少数幸存的对象移动到另一个区域即可。
三、Parallel Young Generation Collector
这是Server VM的默认垃圾收集器。
四、Mark-Compact Old Object Collector
虽然代复制垃圾垃圾收集器能够有效的回收大部分对象,但是一些生命周期比较长的对象仍然积累在旧对象内存区。标记紧凑收集器遍历整个活动对象图,移动活动对象已填补已死对象留下的废弃区域,从而使内存更加紧凑。
五、Mostly Concurrent Mark-Sweep Collector
减少旧代区域清理的暂停时间,这是通过在程序线程执行的同时进行大量的跟踪和清理工作实现的。
六、Parallel Old Generation Collector
当前版本的HotSpot VM为旧代引入了并行标记紧凑垃圾收集器,这种垃圾收集器是为增大系统吞吐量而设计的,当开始回收时会暂停程序并同时启动很多线程来清理旧代中的区域。
一个垃圾收集器可由以上的几种垃圾收集算法组合而成,对于Young generation和Old generation采取适合该堆栈区域的算法。