问:
老师如何取消循环引用
(
实务操作\
所有区域\ 所有领域
会计\所有领域\
所有行业
)
2023-01-18
回答:
循环引用是指指向对象的变量引用被该变量所指向的对象中的另一个变量又引用回去,因此建立了一种循环,造成了内存的无限膨胀,最终导致内存溢出。取消循环引用的方法有多种,可以采用弱引用、虚引用、软引用和物理取消等。
弱引用可以通过将变量声明为WeakReference的方式使用,它的特点就是当对象不再被引用时,它会被回收。
虚引用可以通过将变量声明为PhantomReference的方式使用,它的特点是虚引用指向的对象在程序运行过程中一直会存在,只有在程序结束时才会被回收。
软引用可以通过将变量声明为SoftReference的方式使用,它的特点是只有当VM内存不够时才会被回收,在没有内存不足的情况下,一直会存在,即使是一个没有被引用的对象。
物理取消可以采用代码中显式地将变量设置为null,从而取消循环引用的方式。
拓展知识:循环引用的形成可能会出现在循环体中,循环中的变量可能会指向一种数据结构,而数据结构也可能指向该变量,这样就会形成循环引用。此外,对象之间的引用和继承关系也可能会因为没有正确地断开引用而导致循环引用的形成。
1279