python 怎样进行内存管理


Posted in Python onNovember 10, 2020

从三个方面来说,主要有方面的措施:对象的引用计数机制、垃圾回收机制、内存池机制。

一、对象的引用计数机制

Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。

引用计数增加的情况:

1、一个对象分配一个新名称

2、将其放入一个容器中(如列表、元组或字典)

引用计数减少的情况:

1、使用del语句对对象别名显示的销毁

2、引用超出作用域或被重新赋值

sys.getrefcount( )函数可以获得对象的当前引用计数

多数情况下,引用计数比你猜测得要大得多。对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。

二、垃圾回收

1、当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。

2、当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。

三、内存池机制

Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。

1、Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。

2、Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。

3、对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。

以上就是python 内存管理的详细内容,更多关于python 内存管理的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python内置函数——__import__ 的使用方法
Nov 24 Python
Django入门使用示例
Dec 12 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
Jan 29 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 Python
Python基础之数据类型知识汇总
May 18 Python
详解Python中的进程和线程
Jun 23 Python
python tqdm实现进度条的示例代码
Nov 10 #Python
python 解决Windows平台上路径有空格的问题
Nov 10 #Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 #Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 #Python
pytorch学习教程之自定义数据集
Nov 10 #Python
pytorch加载语音类自定义数据集的方法教程
Nov 10 #Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 #Python
You might like
php后退一页表单内容保存实现方法
2012/06/17 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python三级菜单的实例
2017/09/13 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
电子商务专业个人的自我评价分享
2013/10/29 职场文书
商务英语本科生的自我评价分享
2013/11/15 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
安全生产投入制度
2014/01/29 职场文书
项目合作协议书
2014/04/16 职场文书
校园环保建议书
2014/05/14 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
圣诞晚会主持词
2015/07/01 职场文书
远程教育学习心得体会
2016/01/23 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS