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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
详解Python中的正则表达式的用法
Apr 09 Python
python实现斐波那契数列的方法示例
Jan 12 Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
python装饰器的特性原理详解
Dec 25 Python
python 伯努利分布详解
Feb 25 Python
解决python运行启动报错问题
Jun 01 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
python实现网页录音效果
Oct 26 Python
python如何将mat文件转为png
Jul 15 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
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
Laravel框架表单验证详解
2014/09/04 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
初学Javascript的一些总结
2008/11/03 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
浅谈python对象数据的读写权限
2016/09/12 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
python支持多线程的爬虫实例
2019/12/21 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
详解rem 适配布局
2018/10/31 HTML / CSS
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
生物工程专业求职信
2014/09/03 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
神秘岛读书笔记
2015/07/01 职场文书
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript