python 的内存管理机制

python 的内存管理


python 通过三种机制实现内存管理: 引用计数机制、垃圾回收机制、内存池机制

  • 引用计数:引用在python中是一种关系,也是指针指向某块内存空间的关系,python内部使用引用计数,当对象被创建或将对象放入一个容器中,该对象的引用计数都会+1,当使用del进行对象销毁时或被重新赋值时,该对象的引用计数会减少。可以使用sys.getrefcount()获取对象当前的引用计数
  • 垃圾回收:垃圾收集器会回收内存中不再使用的部分,其包含:1.引用计数为0的对象,清除其在内存的空间;2.当两个对象相互引用时,其本身其它的引用为0,此时循环垃圾回收器会释放循环引用对象 【补充知识:python将内存根据对象存活时间划分为不同集合:年轻代、中年代、老年代,每一代对应一个链表,新创建的对象分配在年轻代,年轻代链表总数达到上限后,python垃圾回收机制被触发,将可被回收的对象回收,而不会被回收的对象会被移到中年代,依次类推,老年代中的对象是存活时间最久的对象,甚至存货于整个系统的生命周期内】
  • 内存池机制:内存池即预先在内存中申请一定数量大小相等的内存作为备用,当出现新的内存需求时会先从内存池中进行内存分配,若不构分配再申请新的内存,(源码中使用pymalloc实现,其对于小的对象(小于256字节)会在内存池中申请空间,对于大的对象则直接调用new/malloc申请新的内存空间),这样做的优点在于:1.减少内存碎片,提升效率(创建大量消耗小内存对象时频繁调用的new/malloc会导致大量的内存碎片);2.不用频繁的在用户态和和核心态进行切换(python在运行期间执行的malloc和free是在核心态执行的)。python对内存的垃圾回收机制将不使用的内存放到内存池而不是返回给操作系统

ref:

Python是如何进行内存管理的 - 知乎 (zhihu.com)

剖析 Python 面试知识点(二)- 内存管理和垃圾回收机制 - 云+社区 - 腾讯云 (tencent.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值