如果拿Java中的对象和现实中的对象做对比的话,可以发现他们有很多相似的地方。Java对象也有状态和行为,状态存储在属性中,行为通过方法表现。现实中的对象有生命周期,Java的对象也有生命周期
- Created(创建)
- In use(使用中)
- Invisible(不可见)
- Unreachable(不可达)
- Collected(被收集)
- Finalized(完成,终结了)
- De-allocated(被释放)
Created
新的内存空间被分配到一个对象上可以理解为Created,一旦对象被创建,假设它被分配到某些变量上,那么它的状态就变化到使用中(InUse)
In Use
对象被强引用可以被看作"In use"
Invisible
当对象不再有任何的强引用时,但是可能还有一些其他的引用
Unreachable
没有任何的强引用,等待被收集之前的状态
Collected
当垃圾收集器识别到这个对象是不可达的,准备好去处理这个对象的时候
Finalized
在调用finalize方法之后,当前对象准备释放内存空间之前。
De-allocated
垃圾收集器的最后一步,对象从内存空间中释放,彻底不存在。
image.png
网友评论