python 的内存管理机制

python 的内存管理机制,第1张

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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4830276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-10
下一篇 2022-11-10

发表评论

登录后才能评论

评论列表(0条)

保存