JVM KnowLedge Collection

标记清除是JVM用于垃圾回收的基本算法算法

标记清除算法中,引用会从每一个线程栈的桢指向程序的堆spa

从栈开始,循着指针找到全部可能的引用,而后再循着这些引用递归下去。线程

当递归完成,就找到了全部活对象,其它都是垃圾。指针

运行时环境自己也有一个“分配清单(allocation list)”,上面列出了指向每一个对象的指针对象

该列表由垃圾回收器负责维护,并帮助垃圾回收器进行垃圾清理。排序

所以,运行时环境老是能够找出由它建立但还没有回收的对象。递归


G1 垃圾回收器针对大内存多核 CPU 的环境,目的在于减小 Full GC 带来的暂停次数,增长吞吐量。内存

从长远来看,G1 会代替 Concurrent Mark-Sweep Collector(CMS)。get

G1 在堆上分配一系列相同大小的连续区域,而后在回收时先扫描全部的区域,按照每块区域内存活对象的大小进行排序,优先处理存活对象小的区域,即垃圾对象最多的区域,这也是 Garbage First 这个名称的由来。io

G1 把要收集的区域内的存活对象合并而且复制到其余区域,从而避免了 CMS 遇到的内存碎片问题。

此外,G1 采用了一个可预测暂停时间模型来达到软实时的要求。


参考文献:

    可视化Java垃圾回收: http://www.infoq.com/cn/articles/Visualizing-Java-Garbage-Collection

    Visualizing-Java-GC: http://www.infoq.com/presentations/Visualizing-Java-GC

相关文章
相关标签/搜索