python中什么会导致内存泄漏? [复制]

2024-02-25

可能的重复:
Python:Python 中是否有可能因为您的代码而出现实际的内存泄漏? https://stackoverflow.com/questions/2017381/python-is-it-possible-to-have-an-actual-memory-leak-in-python-because-of-your-c

由于Python垃圾收集器处理循环引用的检测(对象A引用对象B和对象B引用对象A),我想知道什么可能导致Python代码中的内存泄漏?您能否提供具体的代码示例,这些代码会创建垃圾收集器无法处理的不可访问的内存区域,或者这种事情是不可能的?

任何例子表示赞赏!


您可以使用gc — 垃圾收集器接口 https://docs.python.org/2/library/gc.html模块,

gc.garbage http://docs.python.org/2/library/gc.html#gc.garbage:

收集器发现的对象列表 无法到达的但无法释放(无法收集的对象)。经过 默认情况下,此列表仅包含具有__del__()方法。[1] https://docs.python.org/2/library/gc.html#id2具有的对象__del__()方法并且是引用循环的一部分 导致整个引用循环无法收集,包括 对象不一定在循环中,但只能从循环中访问。 Python 不会自动收集此类循环,因为一般来说, Python 不可能猜测运行的安全顺序__del__()方法。如果您知道安全顺序,则可以通过检查垃圾列表并显式中断循环来强制解决问题 您在列表中的对象。请注意,这些对象保持活动状态 即便如此,由于已被列入垃圾名单,所以它们应该是 也从垃圾中去除。例如,在中断循环后,执行以下操作:del gc.garbage[:]清空列表。一般来说,最好避免 问题是不创建包含对象的循环__del__()。 方法,并且在这种情况下可以检查垃圾以验证没有 这样的循环正在形成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中什么会导致内存泄漏? [复制] 的相关文章

随机推荐