python的内存管理机制

本文介绍了Python中的垃圾回收机制,包括引用计数和循环垃圾回收器的工作原理。此外还讲解了Python的内存池机制,如何分配不同大小的内存块,并探讨了引用计数在对象生命周期中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、垃圾回收

1  python是一门动态语言,在声明变量时不需要定义变量的类型,可以直接对它进行赋值,对象的类型和内存都是在运行时确定的;

2  当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉;即对象的引用计数为0时会被清除;

3  垃圾回收机制中的循环垃圾回收器,确保释放循环引用对象。

二、内存池机制

1  python的内存池机制是以金字塔形式存在,-1、-2层主要由操作系统进行操作;

2  第0层主要由C中的malloc、free等内存分配和释放函数进行操作;

3  第1、2层是python的内存池,由python的接口函数PyMem_Malloc实现,主要分配小于256K的内存;

4  第3层是最上层,也就是我们对python对象的直接操作;

5  当需要的内存大于256K时,就会调用C的malloc来分配内存,每次分配一块256K的内存,经过内存池登记的内存,最后还是会回收到内存池,供下次使用。

三、引用计数

类似于windows内核对象的方式管理内存。每一个对象,都维护着指向该对象的引用计数。

引用计数增加:

1 对象被创建:x = 1;

2 对象被引用:y = x;

3  被作为参数传递给函数:foo(x);

4 作为容器对象的一个元素:a = [1,x,'aa'];

引用计数减少:

1 本地引用离开作用域:函数foo(x)结束;

2  对象被销毁:del x;

3  对象被赋值给其他对象:x = 33;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值