python - 从变量取消引用内存中的 Python 列表对象时会发生什么?

标签 python list memory

从变量取消引用内存中的 Python 列表对象时会发生什么?

示例

A = ["A", "B"]
print(A)
A = []
A = None
print(A)

["A", "B"] 会发生什么?

最佳答案

不再有任何引用指向它们的对象将被删除。

CPython 通过引用计数来实现这一点;分配会增加引用计数,删除引用会减少引用计数。当计数达到 0 时,对象将被自动删除。

边缘情况是指对象直接或间接指向自身;例如,通过向其自身添加一个列表:

>>> a = []
>>> a.append(a)
>>> a
[[...]]

那里的省略号表示引用循环。 Python 使用垃圾收集器来检测并打破此类循环;它定期运行以查找未被其他任何内容引用的对象图。

关于python - 从变量取消引用内存中的 Python 列表对象时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863707/

相关文章:

python - 无法获取建议的枚举值

list - 如何将列表索引(网格)与片段元素进行比较?

javascript - '未定义' - 如果它被定义为原始值,那么它在内存级别的值是如何定义的?

c++ - 如何确定 MSVC C++ 中的内存分配?

Python-类型错误 : iterable argument required

Python3 正则表达式 findall

python - Seaborn 无法覆盖 Matplotlib 的 rcParams ['grid.linewidth' ]

c# - 获取 linq 列表中对象的百分比并将其映射到 JSON 的最佳方法是什么?

python - 压缩具有重复项的 Python 频率列表(可能带有推导式)

memory - 判断内存位置是否在 CPU 缓存中