Java对象的生命周期

如果拿Java中的对象和现实中的对象做对比的话,可以发现他们有很多相似的地方。Java对象也有状态和行为,状态存储在属性中,行为通过方法表现。现实中的对象有生命周期,Java的对象也有生命周期

  • Created(创建)
  • In use(使用中)
  • Invisible(不可见)
  • Unreachable(不可达)
  • Collected(被收集)
  • Finalized(完成,终结了)
  • De-allocated(被释放)
image.png

Created

新的内存空间被分配到一个对象上可以理解为Created,一旦对象被创建,假设它被分配到某些变量上,那么它的状态就变化到使用中(InUse)

In Use

对象被强引用可以被看作"In use"

Invisible

当对象不再有任何的强引用时,但是可能还有一些其他的引用

Unreachable

没有任何的强引用,等待被收集之前的状态

Collected

当垃圾收集器识别到这个对象是不可达的,准备好去处理这个对象的时候

Finalized

在调用finalize方法之后,当前对象准备释放内存空间之前。

De-allocated

垃圾收集器的最后一步,对象从内存空间中释放,彻底不存在。

image.png

你可能感兴趣的:(Java对象的生命周期)