Python如何进行内存管理?

Python是如何管理内存的?
答:从三个方面来看,一对象引用计数机制、二垃圾回收机制、三内存池机制。
一、对象引用计数机制
引用计数用于Python内部保持跟踪内存中的对象,所有对象都有引用计数。
引用计数增加:
一个对象分配一个新名称
2.将其放入容器中(如列表、元组或字典)
引用计数减少:
1.销毁使用del语句对象别名显示的对象
2.引用超出作用域或重新赋值
Sys.getrefcount( )当前引用计数可以获得对象的函数
在大多数情况下,参考计数比你猜测的要大得多。对于不可变数据(如数字和字符串),解释器将在程序的不同部分共享内存,以节省内存。
相关推荐:Python视频教程
二、垃圾回收
1.当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。
2.当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁引用底层对象的名称。然而,由于每个对象都包含一个对其他对象的应用程序,引用计数不会归零,对象也不会被销毁。(导致内存泄漏)。为了解决这个问题,解释器将定期执行一个循环探测器,搜索不可访问对象的循环并删除它们。
三、内存池机制
Python为内存提供了垃圾收集机制,但它将未使用的内存存储在内存池中,而不是返回到操作系统。
1.Pymalloc机制。为了加快Python的执行效率,Python引入了一种管理小块内存申请和释放的内存池机制。
2.Python中所有不到256个字节的对象都使用Pymalloc实现的分配器,而大对象则使用系统的malloc。
3.对于Python对象,如整数、浮点和List,都有自己独立的私有内存池,对象之间没有共享内存池。也就是说,如果你分配并释放大量的整数,那么用于缓存这些整数的内存就不能再分配给浮点。
