知行编程网知行编程网  2022-11-18 16:30 知行编程网 隐藏边栏  21 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python如何控制内存的相关知识,包括python读取内存,以及python爆内存这些编程知识,希望对大家有参考作用。

python如何控制内存

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,都有自己的私有内存池,对象不共享内存池。也就是说,如果你分配和释放大量整数,则用于缓存这些整数的内存不能再分配给浮点数。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享