您的位置:首页 > 编程语言 > Java开发

Java的垃圾回收机制

2010-03-19 11:30 134 查看
Java是如何查找存活的对象或是垃圾?

首先,Java从存储着引用的栈或静态存储区开始,遍历每一个引用,对于每个引用,垃圾回收器会追踪其对象,如果对象之中包含着其他引用(加入为A对象的引用),则继续追踪A对象的引用,直至遍历完成所有的引用。在该方式下,垃圾是永远不会被追踪到的。

Java采用何种技术进行垃圾回收?

在上述前提下,Java采用一种称为自适应的垃圾回收技术。一般有停止-复制(stop-and-copy标记-清除(mark-and-sweep两种方法。
对于stop-and-copy方式,Java虚拟机会将所有存活的对象拷贝至另一个新堆,未被拷贝的都是垃圾。需要注意的是,移至新堆的时候所有指向这些对象的引用均要修正。
对于mark-and-sweep方式,也是从栈和静态区出发,遍历所有引用,对于每个存活的对象都加上标记,直至遍历完毕,最后,没有被标记的对象将会被释放,该过程不会进行复制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: