python内存管理机制

本文详细介绍了Python的内存管理机制,包括四层结构,内存池管理小内存,以及对象缓冲池。此外,深入讨论了Python的垃圾回收机制,如引用计数、标记-清除和分代回收,分析了它们的优缺点。最后,提到了gc模块的功能,如解决循环引用问题,以及在项目中的应用和注意事项。
摘要由CSDN通过智能技术生成

一 内存管理:
python中的内存管理机制的层次结构提供了4层,其中个最底层是c语言运行的malloc
和free接口,往上的三层才是由Python实现并且维护的。

第一层则是在第0层的基础之上对其提供的接口进行了统一的封装,这是因为虽然不同的
操作系统都提供标准定义的内存管理接口,但是对于某些特殊的情况不同的操作系统都有
不同的行为,比如说调用malloc(0),有的操作系统会返回NULL,表示内存申请失败;
然而有的操作系统会返回一个貌似正常的指针,但是这个指针所指的内存并不是有效的。
为了广泛的移植性,Python必须保证相同的语义一定代表相同的运行行为。

在第二层主要是对象缓冲池机制,它基于在第二层的内存池。

第三层的内存管理机制上,Python构建了更高抽象的内存管理策略,比如说一些常用对象,
包括整数对象、字符串对象等等。

内存池:
Python为了避免频繁的申请和删除内存所造成系统切换于用户态和核心态的开销,
从而引入了内存池机制,专门用来管理小内存的申请和释放。整个小块内存的内存池可以
视为一个层次结构,其一共分为4层,从下之上分别是block、pool、arena和内存池。
需要说明的是:block、pool和area都是代码中可以找到的实体,而最顶层的内存池只是
一个概念上的东西,表示Python对于整个小块内存分配和释放行为的内存管理机制.
注意,内存大小以256字节为界限,大于则通过malloc进行分配,小于则通过内存池分配。

1)block:最小的内存单元,大小为8的整数倍。有很多种类的block,不同种类的
b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值