- 内存管理机制:引用计数、垃圾回收、内存池。
Python的垃圾回收机制garbage collection
- Python在内存中存储了每个对象的引用计数reference count。当一个Python对象被引用时其引用计数增加1,当其不再被一个变量引用时则计数减1,如果计数值变成0,那么相应的对象就会消失,分配给该对象的内存就会释放出来用作他用。
- 偶尔也会出现引用循环reference cycle。垃圾回收器会定时寻找这个循环,并将其回收。举个例子,假设有两个对象o1和o2,而且符合
o1.x == o2
和o2.x == o1
这两个条件,如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。 - Python中使用了某些启发式算法来加速垃圾回收。例如,越晚创建的对象更有可能被回收。 对象被创建之后,垃圾回收器会分配它们所属的代
generation
。每个对象都会被分配一个代,而被分配更年轻的对象是优先被处理的。
举个例子: 当某些内存块 M