Python 内存管理
在任何编程语言中,编写一个内存高效且执行速度快的代码是每个开发者的愿望。在Python中,内存分配和释放不是手动的,因为Python有垃圾收集器。
现在,什么是垃圾收集器。
垃圾收集器
垃圾收集是在不使用时释放内存以及如何使其可用于其他对象的过程。Python会删除不再使用的对象。这就是我们所说的垃圾回收。垃圾收集器在程序启动时启动其执行,并在引用计数降到零时激活。
Python的垃圾收集器在程序执行过程中运行,并在对象的引用计数达到零时触发。对象的引用计数会随着指向它的别名数量的变化而变化。
现在让我们看一下Python中如何分配内存−
静态内存分配 – 栈
在静态内存分配中,内存在编译时分配。堆栈数据结构存储静态内存。
下面是一个在堆栈上分配内存的快速示例−
动态内存分配 – 堆
在动态内存分配中,内存在运行时分配。堆存储动态内存。如果对象不再需要,它会释放内存空间。
以下是一个快速示例,其中在堆上为2个整数分配内存-
如上所讨论,垃圾收集器在程序启动时开始执行,并在引用计数降至零时激活。让我们了解一下什么是引用计数。
引用计数
Python垃圾收集器在程序启动时开始执行,并在引用计数降至零时激活。让我们看看引用计数何时增加或减少:
当以下情况发生时,引用计数值增加:
- 当将新名称分配给字典或元组时,引用计数增加。
-
如果将引用重新分配给对象,引用计数会减少。
当以下情况发生时,引用计数值减少:
- 当对象的引用超出作用域时,值减少。
- 当对象被删除时,值减少。
因此,引用计数实际上是其他对象引用对象的次数。当引用计数降至零时,对象将被释放。