java 引用--PhantomReference

1.引用可达性

  1. 强引用可达–如果一个对象可以通过线程访问不需要访问引用对象,那个这个对象是强引用可达。
  2. 软引用可达(softly reachable)–如果一个对象没有强引用,但是可以遍历软引用到达,那个这个对象是软引用可达。
  3. 弱引用可达( weakly reachable)–如果一个对象没有强引用可达或者软引用可达,但是可以遍历弱引用可达。那么这个对象是弱引用可达。
  4. 幽灵引用可达(phantom reachable)– 如果一个对象即没有强引用可达、软引用可达或者弱引用可达。对象中的finalized方法已被调用,但是一些
    phantom reference指向它。
    https://stackoverflow.com/questions/2506488/when-is-the-finalize-method-called-in-java

2.java finalize方法

  1. java 中的finalize方法是由垃圾收集器调用的。如果一个程序调用exit方法退出应用,垃圾收集器不会执行。
  2. 如果一个对象覆盖了finalize方法,那么这个对象将会放置在一个叫做F-Queue的队列之中。并在稍后由一个虚拟机自动建立的、低优先级的Finalizer线程去执行它。
  3. 虚拟机会触发这个方法,但并不承诺会等待它运行结束,这样做的原因是,如果一个对象在finalier方法中执行缓慢,或者发生了死循环,导致整个内存系统崩溃。
  4. finalize方法会逃脱死亡命运的最后一次机会。
  5. finalize方法只被执行一次,如果finalize执行过,则不会执行第二次。

猜你喜欢

转载自blog.csdn.net/ai_xiangjuan/article/details/82729553