Python – 和许多其他语言类似 (Java, c# 等),使用垃圾收集机制,而不是手工管理内存。Python内存依靠 Python 私有堆空间管理 。全部的Python对象和数据结构都分配在一个私有堆。开发者不需要访问这个私有堆,解释器会维护它。
Python 内存管理
Python 内存管理负责内存的分配,负责为Python对象分配内存空间。我们可以自由的创立对象,Python内存管理会周期性的查询对象的引用情况。核心 API为程序开发提供了一些工具。
Python 也有一个内建的垃圾收集器,回收不用的内存,释放内存,让它被堆空间再次利用。所以操作一个对象,仅仅是在操作它的引用,如果想释放一个对象,清除掉对它的全部引用就可以。
def getDays(days):
for day in days:
print day
getDays(["Sunday", "Monday", "Tuesday"])
getDays(["Wednesday", "Thursday", "Friday"])
每一个对 getDays 的调用,都创建一个Python列表对象,包含三个初始值。 在getDays调用期间,它们被变量days所引用,一旦函数退出,就没有变量引用它们了,它们就会被垃圾收集器删除。
Python 内存分配
内存回收依靠引用计数器掌握。 Python 虚拟机会保持一个内部的对一个对象的引用日志,并且在没有对它的引用的时候,自动的收集它。尽管python使用 ‘引用计数’和’垃圾归集’去释放内存 (不再使用的对象), 但是内存并没有归回给操作系统 。释放的内存块仅仅归给了python解释器,而不是操作系统。这样python进程仍然掌握着同样的内存, Python 将把内存分配给其他对象。
Python 基础