python操作内存,python内存管理机制有哪些
Python是如何进行内存管理的?
从三个方面回答:一个对象的引用计数机制,两个垃圾收集机制,三个内存池机制。
一、对象的引用计数机制
Python内部使用引用计数来跟踪内存中的对象,所有对象都有引用计数。
当引用计数增加时:
1,给一个对象分配一个新名称。
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,都有自己的私有内存池,对象不共享自己的内存池。也就是说,如果你分配释放了大量的整数,那么用来缓存这些整数的内存就不能再分配给浮点数了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。