内存管理机制:引用计数、垃圾回收、内存池机制。
1. 引用计数
引用计数也是一种垃圾收集机制,而且也是一种最直观,最简单的垃圾收集技术。当Python 的某个对象的引用计数降为0 时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾了。比如某个新建对象,它被分配给某个引用,对象的引用计数变为1。如果引用被删除,对象的引用计数为0,那么该对象就可以被垃圾回收。不过如果出现循环引用的话,引用计数机制就不再起有效的作用了
2. 垃圾回收
标记清除
如果两个对象的引用计数都为1,但是仅仅存在他们之间的循环引用,那么这两个对象都是需要被回收的,也就是说,它们的引用计数虽然表现为非0,但实际上有效的引用计数为0。所以先将循环引用摘掉,就会得出这两个对象的有效计数。
分代回收
根据程序活跃度进行分代,0,1,2三代,当某一代对象经历过垃圾回收,依然存活,就被归入下一代对象。
3. 内存池机制
Python中有分为大内存和小内存:(256K为界限分大小内存);大内存使用malloc(接口函数)进行分配;小内存使用内存池进行分配。