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中的JSON模块
Apr 08 Python
Python编程入门的一些基本知识
May 13 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
Python语言实现将图片转化为html页面
Dec 06 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
python flask框架实现重定向功能示例
Jul 02 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
详解Django CAS 解决方案
Oct 30 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
Django基于客户端下载文件实现方法
Apr 21 Python
python实现粒子群算法
Oct 15 Python
Python scrapy爬取起点中文网小说榜单
Jun 13 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代码
2007/03/08 PHP
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python set集合类型操作总结
2014/11/07 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
python开发简易版在线音乐播放器
2017/03/03 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
python suds访问webservice服务实现
2020/06/26 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
大学生年度自我鉴定
2013/10/31 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
公司年终奖分配方案
2014/06/16 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers