Python内存池管理与缓冲池设计

本文详细介绍了Python的内存管理机制,包括内存池和对象缓冲池。内存池针对小内存使用,分为四个层次:Block、Pool、Area、usedpool。对象缓冲池涵盖整数、字符串、列表和字典对象,其中小整数和部分字符串有预分配的缓冲池。文章还探讨了缓冲池的设计,特别是LRU刷新机制。
摘要由CSDN通过智能技术生成

Python是一门开发效率很高的语言,而且其既下里巴人,又阳春白雪。也就是说这门语言只要稍加学习就可以上手开发,而深入探究也会发现Python有很多高深的东西。最近读了《Python源码剖析》,收获良多,今天就把Python的内存管理整理一番。

本文的组织如下:
第一部分:整理Python的内存管理机制,主要包括内存池以及对象缓存池
第二部分:从百度的笔试题来探讨如何实现一个缓存池。


第一部分:整理Python的内存管理机制

Python的内存管理内存总共分为4层,如下图所示


其中Layer2为内存池,Layer3为对象缓冲池。Python的对象缓冲池Layer3是建立在Layer2基础上的。

本文重点总结内存池和对象缓冲池。


内存池

ython又分为大内存和小内存。大小以256字节为界限,对于大内存使用Malloc进行分配,而对于小内存则使用内存池进行分配。

 Python的内存池又分为4个层次:Block、Pool、Arean、usedpool,如下图所示



其中block是最小的内存单元,大小为8的整数倍。如果想申请27B的内存,会分配一个32B的block,其中申请size和size_index之间的关系有对应,见下图




其中block是最小的内存单元,大小为8的整数倍。如果想申请27B的内存,会分配一个32B的block,其中申请size和size_index之间的关系有对应,见下图


<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值