Java,Python之类的有智能指针的语言,如何处理由交叉引用造成的...
发布网友
发布时间:2024-03-30 06:13
我来回答
共2个回答
热心网友
时间:2024-04-20 23:59
正常设计通常不会有交叉引用的问题。 别被这些东西困扰了。
比如上面设计中,引用对象,通常是因为这些对象是父类,或者是功能类,所以当前类被删除的时候并不会被删除,但是父类和功能类通常都在系统初始化时初始化,系统退出时才被删除。
所以正常的设计情况下不存在这个问题。 内存泄漏往往是在使用别人的类,又不太搞清楚它的位置以及使用方法的情况下造成的。
热心网友
时间:2024-04-21 00:01
同样的东西,名称有所不同而已
Java: java.lang.ref.WeakReference
Python: weakref
通常的垃圾回收有两种方式,一种是引用计数(reference counting)也就是利用智能指针,另一种是循环垃圾回收器(cyclic garbage collector)。后者可以直接处理循环引用,不过通常不能及时调用析构方法。
Java和python都有循环垃圾回收器,所以弱引用只是一个补充而已