1. 强可触及
垃圾收集器不会回收强可触及对象占据的空间。
2. 软可触及(SoftReference)
垃圾收集器可能回收软可触及对象的内存。如果发生了,它会清除这些软可触及对象的软引用。当垃圾收集器清除了一个和引用队列有关联的软引用对象时,它把该软引用对象加入队列。
SoftReference可以用来创建内存中缓存,JVM的实现需要在抛出OutOfMemoryError之前清除软引用,但在其他的情况下可以选择清理的时间或者是否清除它们。
3. 弱可触及 (WeakReference)
垃圾收集器必须归还弱可触及对象所占据的内存。
WeakReference 可以用来创建规范映射,比如哈希表,它的关键字在没有其他程序部分的引用时可以从映射中清除。java.util.WeakHashMap就用弱引用提供了这样的规范映射。
4. 可复活的
对象既不是强可触及、软可触及,也不是弱可触及,但是仍然可能通过执行某些终结(finalizer)方法复活到这几种状态之一。
5. 影子可触及
垃圾收集器不会清除一个影子引用,所有的影子引用都必须由程序明确的清除。
调用影子对象的get()方法只能得到null。
6. 不可触及
不可触及对象已经准备好回收了。
阅读(2502) | 评论(0) | 转发(0) |