强引用、软引用、弱引用、幻象引用有什么区别
时间: 2023-12-08 18:04:35 浏览: 90
强引用、软引用、弱引用、虚引用1
在 Java 中,引用可以分为四种类型:强引用、软引用、弱引用和幻象引用。
1. 强引用(Strong Reference):是指在程序代码中普遍存在的引用,它会尽可能长时间地存活于 JVM 内部,只有在发生强制回收之前,才会被垃圾回收器回收。
2. 软引用(Soft Reference):是一种相对弱化的引用,如果一个对象只有软引用关联它,那么在系统内存不足时,垃圾回收器将会回收这个对象的内存以释放资源。使用软引用可以有效避免内存溢出的问题。
3. 弱引用(Weak Reference):比软引用更弱化的引用,只要发现一个对象只有弱引用关联它,不管当前内存是否充足,垃圾回收器都会将这个对象进行回收。
4. 幻象引用(Phantom Reference):是最弱化的一种引用,它无法通过 get() 方法来访问被引用的对象,也就是说,幻象引用仅仅是提供了一种确保对象被 finalize() 之后,做一些必要操作的机制,比如:清理堆外内存或调用某个方法等。
总的来说,强引用和软引用和弱引用之间是存在着明显区别的,而幻象引用则是作为一个对象被回收前的一个标志。对于 Java 程序员而言,正确地使用这四种引用类型,可以在很大程度上提高程序的性能和可靠性。
阅读全文