目录
- 内存分配方式
- 自动内存管理
- 内存分配策略
- 垃圾回收机制
- 引用计数垃圾回收
- 对象创建和引用关系
- 引用计数的状态
- 删除变量
- 标记 - 清除垃圾回收
- 内存分配的区域划分
- 栈内存
- 堆内存
- 内存管理的优化
- 内存池技术
- 对象共享
Python 的内存管理机制是其运行效率和安全性的重要保障,主要包括以下几个方面:
内存分配方式
自动内存管理
- Python 采用自动内存管理,主要通过垃圾回收机制来实现。它不需要程序员手动释放内存【典型的例子C和C++,使用malloc和free等函数】,大大减少了内存泄漏等错误的发生。例如,在 Python 中创建一个列表对象:
当这个列表不再被任何变量引用时,Python 的垃圾回收机制会自动回收它所占用的内存。my_list = [1, 2, 3]
- 这种自动管理方式使得程序员可以更专注于程序逻辑的实现,而不是内存管理的细节。
内存分配策略
- Python 使用引用计数作为主要的内存分配策略。每个对象都有一个引用计数器,当一个对象被创建时,它的引用计数器被设置为 1。例如:
此时,整数对象 10 的引用计数为 1。a = 10
- 当一个对象被赋值给另一个变量时,引用计数会增加。例如:
整数对象 10 的引用计数变为 2。b = a
- 当一个对象被删除或者其引用被重新赋值给其他对象时,引用计数会减少。例如:
整数对象 10 的引用计数变为 1。当引用计数变为 0 时,Python 的垃圾回收机制就会回收该对象所占用的内存。del a