【3】内存回收

2017-08-11  本文已影响0人  zhuangchuhan

什么样的对象要回收?

当然是死掉的对象,那么,怎么判断是死掉的对象?有几种方法:

1.引用计数法

对象有一个引用计数器,保存指向它的引用。当计数器为0的时候,就没有引用指向它,那么就可以被回收。

弊端:AB互相持有对方的引用,那么AB永远不会被回收,造成内存空间的浪费。

2.可达性分析

GC Roots对象,从这些对象出发,向下搜索,走过的路径成为引用链,当一个对象到GC Roots没有任何引用链链接的时候,那么,这个对象就可以被回收。

GC Roots对象包括:

虚拟机栈中的对象

本地方法栈中的对象

方法区中常量引用的对象

方法区中静态变量引用的对象

垃圾回收算法

上一篇 下一篇

猜你喜欢

热点阅读