python控制内存的方法:
一、对象的引用计数机制
二、垃圾回收机制
三、内存池机制
一、对象的引用计数机制
Python 在内部使用引用计数来跟踪内存中的对象,并且所有对象都有引用计数。
引用计数增加的情况:
1、一个对象分配一个新名称
2、将其放入一个容器中(如列表、元组或字典)
引用计数减少的情况:
1、使用del语句对对象别名显示的销毁
2.引用超出范围或被重新赋值 sys.getrefcount()函数可以获取对象当前的引用计数
在大多数情况下,引用计数比你想象的要大得多。对于不可变数据(例如数字和字符串),解释器在程序的不同部分之间共享内存以节省内存。
二、垃圾回收
1、当一个对象的引用计数为零时,会被垃圾回收机制处理掉。
2.当两个对象a和b相互引用时,del语句可以递减a和b的引用计数,并销毁用于引用底层对象的名称。但是,由于每个对象都包含对其他对象的应用程序,因此引用计数不会归零,对象也不会被销毁。 (从而导致内存泄漏)。为了解决这个问题,解释器周期性地执行一个循环检测器,搜索不可到达对象的循环并删除它们。
三、内存池机制
Python 为内存提供了垃圾回收机制,但是它将未使用的内存放入内存池中,而不是将其返回给操作系统。
1. Pymalloc机制。为了加快 Python 的执行效率,Python 引入了内存池机制来管理小块内存的申请和释放。
2、Python中所有小于256字节的对象都使用pymalloc实现的allocator,而大对象使用系统的malloc。
3、对于Python对象,比如整数、浮点数、Lists,都有自己的私有内存池,对象不共享内存池。也就是说,如果你分配和释放大量整数,则用于缓存这些整数的内存不能再分配给浮点数。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python 3.5的解释器是什么10/10
- ♥ python常用集合库教学01/04
- ♥ python中的冒号是什么意思09/06
- ♥ python解释器的提示是什么09/14
- ♥ python如何通过命令行输入参数?10/08
- ♥ python随机函数能否生成一个字符串01/13
内容反馈