python之内存管理

前言

python中,万物皆对象。

因此,内存的管理,便是管理对象从创建到销毁的过程。有效地管理内存,既可以减少内存碎片,又可以避免内存泄漏等现象(大概讲讲)。

内存的分配

Python内部对于内存分配的申请做了分情形处理。具体如下:

1、当申请的对象创建所需内存小于等于512字节时,内存的分配将由针对短生命周期的小对象进行了优化pymalloc 分配器处理。它使用名为"arena"的内存映射,在 32 位平台上的固定大小为 256 KiB,在 64 位平台上的固定大小为 1 MiB。

2、当申请的对象创建所需内存大于512字节时,它会回退为 PyMem_RawMalloc() 和 PyMem_RawRealloc()。向操作系统申请分配内存。

上文讲到的pymalloc,便是内存池机制的python实现,内存池将预申请的内存为小、中、大三种,进而规范小碎片内存的获取。让内存被释放时,会将临近的未被占用的内存碎片与释放的内存合并。在处理符合条件的内存申请是,pymalloc会先判断是否能从内存池分配,如果不够,再向操作系统请求分配。

内存的回收

内存的回收可分为自动回收与手动回收

手动回收,我们可以通过调用garbage.collect()回收不可回收(uncollectible)的内容,只要删了吧,就算是在循环中被嵌套也会被回收

自动的情况为:

变量在被引用时,我们会做对引用的次数做计数,取消引用时减一,新增引用时加一。若引用为零,则会自动回收。

若存在循环,

对于存在循环引用的情况,有两种处理方式:

1、一种是达到阈值(分三代0,1,2,每一代有默认阈值,也可以自行配置)时触发的自动回收

2、一种是程序退出时的自动回收

未完待续,= =

相关推荐
Carl_奕然7 分钟前
【智能体】Agent的四种设计模式之:React(2026最新版)
javascript·人工智能·python·react.js·设计模式·语言模型
岁月宁静8 分钟前
四、《从零手撸 Agent》 — 流式输出:接住 AI “一个字一个字” 想出来的过程
python·agent
是吕先森12 分钟前
【python】selenium实现web自动化测试
前端·python·selenium
residual_fan17 分钟前
特征级SMOTE(Feature-level SMOTE)论文分享
人工智能·算法·数据挖掘·数据分析
xxwxx__19 分钟前
深入理解 C++ STL:stack、queue 与 deque 从使用到底层实现全解析
开发语言·c++·算法
卷无止境19 分钟前
从脚本到程序:Windows平台上的Python打包全景图
后端·python
my059219 分钟前
市场学习,不止看资讯,数据查阅与思维练习同样重要
python·学习
黑科技工坊21 分钟前
2026年口碑载道:铝面板定制供应商优选指南
大数据·人工智能·python
wuminyu24 分钟前
JVM锁膨胀与Futex源码解析
java·linux·c语言·jvm·c++
ai小陈26 分钟前
PyTorch实验可复现实战:随机种子、依赖锁定与配置归档
人工智能·pytorch·python·深度学习·ai·gpu算力