python如何控制内存

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