_J

please call me j

导航

随笔分类 -  Garbage Collection

【GC Algorithm】标记-缩并算法
摘要:(文章参考21TO)【概述】标记-缩并算法是为了解决内存碎片问题而产生的一种算法。它的整个过程可以描述为:标记所有的存活对象;通过重新调整存活对象位置来缩并对象图;更新指向被移动了位置的对象的指针。【难点】如何选择所使用的压缩算法,如果压缩算法选择不好,将会导致极大的程序性能问题,如导致Cache命中率低等。一般来说,根据压缩后对象的位置不同,压缩算法可以分为以下三种:1. 任意:移动对象时不考虑它们原来的次序,也不考虑它们之间是否有互相引用的关系。2. 线性:尽可能的将原来的对象和它所指向的对象放在相邻位置上,这样可以达到更好的空间局部性。3. 滑动:将对象“滑动”到堆的一端,把存活对象之间 阅读全文

posted @ 2012-08-30 20:05 _J 阅读(234) 评论(0) 推荐(0)

【GC Algorithm】标记消除算法
摘要:(此文章参考位置-21TO)【概述】标记-清除(Mark-Sweep)算法依赖于对所有存活对象进行一次全局遍历来确定哪些对象可以回收,遍历的过程从根出发,找到所有可达对象,除此之外,其它不可达的对象就是垃圾对象,可被回收。整个过程分为两个阶段:标记阶段找到所有存活对象;清除阶段清除所有垃圾对象。标记-清除算法的执行过程是这样的:午餐过程中,餐厅里的所有人都根据自己的需要取用餐巾纸。当垃圾收集机器人想收集废旧餐巾纸的时候,它会让所有用餐的人先停下来,然后,依次询问餐厅里的每一个人:“你正在用餐巾纸吗?你用的是哪一张餐巾纸?”机器人根据每个人的回答将人们正在使用的餐巾纸画上记号。询问过程结束后,机 阅读全文

posted @ 2012-08-28 13:23 _J 阅读(543) 评论(0) 推荐(0)

【GC Algorithm】引用计数算法
摘要:(文章参考http://www.2cto.com/kf/201110/108419.html)【概述】引用计数(Reference Counting)算法是每个对象计算指向它的指针的数量,当有一个指针指向自己时计数值加1;当删除一个指向自己的指针时,计数值减1,如果计数值减为0,说明已经不存在指向该对象的指针了,所以它可以被安全的销毁了(回收)。可以很直观的用下面的图表示:【优点】1.在于内存管理的开销分布于整个应用程序运行期间,非常的“平滑”,无需挂起应用程序的运行来做垃圾回收;2.在于空间上的引用局部性比较好,当某个对象的引用计数值变为0时,系统无需访问位于堆中其他页面的单元,而后面我们将 阅读全文

posted @ 2012-08-28 00:22 _J 阅读(486) 评论(0) 推荐(0)