首页 > 文章列表 > Python中的内存管理

Python中的内存管理

Python 内存 内存管理
247 2023-09-08

编写内存效率高且执行速度快的代码是每个开发人员在使用任何编程语言时都希望的。在 Python 中,内存分配和释放不是手动的,因为 Python 有垃圾收集器。

现在,什么是垃圾收集器。

垃圾收集器

垃圾收集是指在不使用内存时如何释放内存以及如何将其可供其他对象使用。 Python 删除不再使用的对象。这就是我们所说的垃圾收集。垃圾收集器启动程序的执行,并在引用计数降至零时激活。

Python 的垃圾收集器在程序执行期间运行,并在对象的引用计数达到零时触发。对象的引用计数随着指向它的别名数量的变化而变化。

现在让我们看看 Python 中的内存是如何分配的 -

静态内存分配 - 堆栈

在静态内存分配中,内存是在编译时分配的。 Stack数据结构存储静态内存。

一个在堆栈上分配内存的简单示例 -

static int x=2;

动态内存分配 – 堆

在动态内存分配中,内存是在运行时分配的。堆存储动态内存。如果不再需要该对象,它会释放内存空间。

一个简单的例子,其中内存在堆上分配 2 个整数 -

x = [0]*2

正如我们上面所讨论的,垃圾收集器随程序启动其执行,并在引用计数降至零时被激活。让我们看看什么是引用计数。

引用计数

Python 垃圾收集器启动程序的执行,并在引用计数降至零时激活。让我们看看引用计数何时增加或减少

引用计数值增加时 -

  • 当分配新名称或在字典或元组中分配新名称时,引用计数会增加其值。

  • 如果我们重新分配对对象的引用,引用计数会减少其值。

参考计数值减少时 -

  • 当对象的引用超出范围时,该值会减小。
  • 当对象被删除时,该值会减少。

因此,引用计数实际上就是其他对象引用一个对象的次数。这样,当引用计数降至零时就会发生解除分配。