2.2 对象存活判断

2018-03-01  本文已影响0人  9cc222f2bb0a

1. 引用计数算法。无法解决仅仅互相引用的问题。

2. 可达性分析算法。可以通过GC Roots到达的即存活,否则不存活。

    可以作为GC Roots的对象:虚拟机栈中引用的对象,方法区中类静态属性引用的对象,方法区中常量引用的对象,本地方法栈中JNI(Native方法)引用的对象。

四种引用方式:

    强引用:直接引用,只要强引用在,对象就不会被回收

    软引用:描述有用但是非必要的对象,GC不会回收,但在内存溢出异常之前,会回收该类对象

    弱引用:描述非必须对象,只会存活到下一次GC之前

    虚引用:无法通过虚引用获得对象实例,虚引用的唯一目的是在被回收的时候收到一个系统通知。

最终死亡的过程:如果被可达性分析算法标记为不可达,那么会被第一次标记,然后筛选,筛选的逻辑是判断是否有必要执行finalize方法,判断规则是是否覆盖finalize()方法或者已经执行过该方法

上一篇下一篇

猜你喜欢

热点阅读