python - 考虑 `var = 5` ,一旦我将另一个值重新分配给 `5` ,计算机会自动删除值 `var` 吗?

标签 python ubuntu out-of-memory cpu

这个问题在这里已经有了答案:





Free memory in Python

(2 个回答)



Releasing memory in Python

(4 个回答)



How to free memory of python deleted object?

(1 个回答)


2年前关闭。




让我们考虑一个简单的情况,

var = 5
var = 6

第一行赋值 5var下一行重新分配 6var .只是出于好奇,是否值 5是否会自动从 CPU 的内存中删除?如果不是,那么理论上,下面的python代码会因为内存消耗而炸毁我的电脑吗?
var = 5
while True:
    var = var + 1

最佳答案

是的,var此时不再保持其先前的值不从内存中删除。在 CPython(Python 的通常实现)中:

  • 这甚至通常会在您重新分配 var 后立即发生因为 CPython 使用引用计数
  • 5 不会发生这种情况,因为 CPython 始终在内存中保留一定范围的小整数

  • 在任何合理的 Python 实现中,您的循环都不会用旧的整数填充内存。在实践中,它使用少量有限的内存。

    in theory



    理论上,Python 具有任意大小的整数,因此在 216,000,000,000 次循环迭代后,您将使用(例如)2 GB 的内存。由于这个原因,你永远不会接近耗尽内存,因为宇宙中没有足够的时间到达那里。

    关于python - 考虑 `var = 5` ,一旦我将另一个值重新分配给 `5` ,计算机会自动删除值 `var` 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57174902/

    相关文章:

    python - 无法在新的 docker 容器上安装 psycopg2-binary

    python - 我可以使用 Tornado+Celery+RabbitMQ+Redis 吗?

    Python 代码结构和约定 - 使用循环为列表创建元素

    ruby-on-rails - 在 Ubuntu 14.04 上安装 gem `ruby2d` 时出错

    ubuntu - Apache2 虚拟主机 403 被禁止?

    php - 如何在 apache 中启用 php7 模块?

    Python:用于显示包含特定字符串的列表的语句?

    Android位图分配怪异

    java - 如何在android中使用imageloader释放位图内存?

    java - 尝试在 imageview 中旋转图像时出现 OutOfMemory 错误