Python:当为变量分配新内容时, "old"内存是否已释放?

标签 python memory-management garbage-collection

如果一个变量被分配了任何新内容,分配给“旧内容”的内存是否会被“适本地”释放?例如,在下面的脚本中,在为“a”分配一些新内容后,变量“a”作为零数组的内存是否会被释放

import numpy
a = numpy.zeros(1000)
a = a+1

我会想象 Python 足够聪明,可以使用所谓的“垃圾收集”干净地完成所有事情,但我从来没有真正读懂过它。任何确认?我将不胜感激。

最佳答案

最终,旧内存将被释放,尽管您无法预测何时会发生这种情况。它取决于 Python 实现和许多其他因素。

也就是说,对于您给出的示例和 CPython 实现,旧数组应该在分配期间被垃圾回收。

(请注意,NumPy 数组是讨论垃圾收集器行为的一个特别复杂的示例。)

关于Python:当为变量分配新内容时, "old"内存是否已释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10019442/

相关文章:

.net - 如何确定 .NET 4 中当前的垃圾收集器模式是什么?

java - Coldfusion 组件吃 JVM 内存

c - 堆栈分配的内存与动态分配的内存

memory - 如何计算二级页表大小?

python - 尝试在 conda 中离线安装包时出现错误消息

python - PIL 在特定点放大图像

objective-c - 自动释放的对象什么时候真正释放?

java - Java 中的清除 protected 双向链表

Python:类:调用同一个类中的函数

python - 根据给定条件向现有数据框添加多个新列