当前位置:主页 > python教程 > python的内存管理机制是什么

理解python内存管理机制

发布:2020-03-13 13:08:47 187


给大家整理一篇Python相关的编程文章,网友赵夜蓉根据主题投稿了本篇教程内容,涉及到python、内存管理机制、python的内存管理机制是什么相关内容,已被258网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

python的内存管理机制是什么

语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。

 

python的内存管理机制是什么

一句话概括:引用计数为主,清除标记,分代回收为辅(推荐学习:Python视频教程)

python的垃圾回收(3种)

引用计数

当对象的引用的计数器变为0的时候,该对象可能在内存中,但是已经不能访问。python的垃圾回收时候不能做其他操作,如果一个对象的引用计数变为0的时候python就去回收该对象,那么很显然Python的效率会很差,那什么时候python会来回收呢?这是一个好问题。

python会监听自己new了多少个新的对象和有多少对象的引用计数器变为0了,两个数值做差的到的数和阈值去比较,大于阈值,内存开始进行垃圾回收,销毁引用计数器为0的对象。

优点:简单实时性,缺点:维护引用计数消耗资源,循环引用。

分代回收

为了提高效率,有很多对象,清理了很多次他依然存在,可以认为,这样的对象不需要经常回收,可以把它分到不同的集合,每个集合回收的时间间隔不同。简单的说这就是python的分代回收。

具体说一下,python中的垃圾分为1,2,3代,在1代里的对象每次回收都会去清理,当清理后有引用的对象依然存在,此时他会进入2代集合,同理2代集合清理的时候存在的对象会进入2代集合。

每个集合的清理时间如何分配,会先清理1代垃圾,当清理10次一代垃圾后会清理一次2代垃圾,当清理10次2代垃圾后会清理2代垃圾。

标记清除

按需分配,当内存不够的时候,从寄存器和程序栈上的引用出发,遍历对象,将遍历的对象打上标记,然后在内存中清除没有标记的对象。

更多Python相关技术文章,请访问Python教程栏目进行学习!

以上就是python的内存管理机制是什么的详细内容,更多请关注码农之家其它相关文章!


参考资料

相关文章

  • 简介python中eval和int的区别

    发布:2020-03-10

    eval()处理数字时,单双引号,eval()函数都将其解释为int类型;三引号则解释为str类型。对于eval()括号中的的字符串,如果字符串带的是单双引号都会引起NameError。int如果带参数base的话,12要以字


  • 介绍Python生成随机数的几种方法

    发布:2020-03-12

    这篇文章主要介绍了Python简单生成随机数的方法,结合实例形式分析了Python基于random模块生成随机数的相关操作技巧,需要的朋友可以参考下


  • PyV8在Python爬虫中执行js代码的方法

    发布:2020-04-13

    PyV8是chrome用来执行javascript的引擎,据说是最快的js引擎,通过pyv8的封装,可以在python中使用。下面这篇文章主要介绍了使用PyV8在Python爬虫中执行js代码的相关资料,需要的朋友可以参考下。


  • python如何通过函数名的字符串来调用这个函数

    python如何通过函数名的字符串来调用这个函数

    发布:2022-06-17

    给大家整理了关于python的教程,通过字符串名称调用函数,可使用eval()方法,它执行一个字符串表达式并返回表达式的值;locals()和 globals()两个内置函数,通过它们可以访问局部和全局变量。


  • Python机器学习性能度量利用鸢尾花数据绘制P-R曲线

    发布:2023-04-09

    这篇文章主要为大家介绍了Python机器学习性能度量利用鸢尾花数据绘制P-R曲线示例学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • python内存动态分配过程示例代码

    发布:2020-02-02

    这篇文章主要介绍了python内存动态分配过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


  • python简单贪吃蛇开发

    发布:2023-01-16

    给网友朋友们带来一篇关于python的教程,这篇文章主要为大家详细介绍了python简单贪吃蛇开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • python最小二乘法线性拟合实现代码

    发布:2020-02-07

    这篇文章主要为大家详细介绍了python实现最小二乘法线性拟合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


网友讨论