Java 理论与实践: JVM 1.4.1 中的垃圾收集
在上月的 Java 理论与实践中,专栏作家 Brian Goetz 回顾了垃圾收集的基本算法。本月,他进一步探讨 JVM 1.4.1 是如何实际处理垃圾收集的,包括一些针对多处理器系统的新垃圾收集选项。请在本文对应的 讨论论坛上与作者及其他读者分享您对本文的心得(您也可以单击文章顶部或底部的 讨论来访问该论坛)。
上个月, 我们分析了引用计数、复制、标记-清除和标记-整理这些经典的垃圾收集技术。其中每一种方法在特定条件下都有其优点和缺点。例如,当有很多对象成为垃圾 时,复制可以做得很好,但是有许多长寿对象时它就变得很糟(要反复复制它们)。相反,标记-整理对于长寿对象可以做得很好(只复制一次),但是当有许多短 寿对象时就没有那么好了。JVM 1.2 及以后版本使用的技术称为 分代垃圾收集(generational garbage collection),它结合了这两种技术以结合二者的长处,结果就是对象分配开销非常小。
在任何一个应用程序堆中,一些对象在创建后很快就成为垃圾,另一些则在程序的整个运行期间一直保持生存。经验分析表明,对于大多数面向对象的语言,包括 Java 语言,绝大多数对象――可以多达 98%(这取决于您对年轻对象的衡量标准)是在年轻的时候死亡的。可以用时钟秒数、对象分配以后
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130171/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/374079/viewspace-130171/