python - 从列表中删除元素后释放内存

标签 python list garbage-collection

当我尝试从 python 列表中删除一个元素时,整个列表的大小仍然相同。

import numpy as np
import sys

l = [np.arange(4) for i in range(4)]
print("size: {}".format(sys.getsizeof(l)))
index = 1
l[index] = None
del l[index]
print("size: {}".format(sys.getsizeof(l)))

显示:

size: 96
size: 96

删除项目后如何释放内存? gc.collect() 不起作用。

最佳答案

Python有内置的垃圾回收功能,你不必手动释放内存。对列表项调用 del 会从列表中删除该项(与删除单个索引时的 pop 方法相同),但它不保证实际释放底层内存。

使用 gc.collect() 强制垃圾回收不起作用的原因是 CPython 列表实现试图最小化 malloc 的数量>free 总体上调用,因此在这种情况下,即使元素被删除后,它们也会保留在内存中,以防您不久后分配一个新元素。

关于python - 从列表中删除元素后释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56078938/

相关文章:

python - 两个单词列表的概率分布

python - 即使没有非弱引用指向对象,weakref 也不能评估为 None 吗?

ruby - `RUBY_GC_OLDMALLOC_LIMIT` 和 `RUBY_GC_MALLOC_LIMIT` 和有什么区别?

java - 以下场景在 Java 中是否称为内存泄漏?不是垃圾收集吗?

python - 在 Python 中使用 PIL 绘制圆形渐变

python - Django休息框架: Custom url pattern for Detail model-viewset with datetime lookup field

python - 动态更改tensorflow中tf.truncated_normal的stddev

python - 使用自动发现获取 Microsoft Exchange 帐户的 Imap 详细信息

java - ArrayList 与递归方法的比较

python - 在一个函数中创建列表,然后在 python (pythonista ios) 中的另一个函数中使用它