繁体   English   中英

Python内存管理

[英]Python memory management

假设我有一棵二叉树,该树在每个节点上都包含指向父级和子级的指针,并且我想删除内部子树的某些部分,以合理的方式将树的其余部分修补回去。

Python是否知道要垃圾收集子树的废弃部分,即使其中的节点相互引用也是如此? 我希望这是使用垃圾收集的所有语言的功能,但是我对垃圾收集的了解还不够确定。 我自己做的最好的事情是一个智能(C ++)指针系统,它不足以处理我上面描述的情况。

是的,Python会丢弃树中未引用的节点。

CPython使用引用计数来完成大部分垃圾回收。 在您的情况下,一个或多个树节点将没有引用,因此它们将被释放。 然后,由释放的节点指向的节点可能没有引用,并且这些引用也将被释放。 递归地,所有未引用的节点将被释放。

CPython还有一个垃圾收集器,可以收集未引用的循环 使用引用计数无法(轻松)检测到这些,但是循环收集器可以识别并释放它们。

其他的Python实现(例如IronPython或Jython)使用不同的垃圾收集器方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM