博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python内存管理机制
阅读量:5060 次
发布时间:2019-06-12

本文共 536 字,大约阅读时间需要 1 分钟。

首先说内存是如何被创建的:

python中一切皆对象,一个简单的赋值语句a=1,在内存中开辟了一段内存地址,存储整数1,这个1本身就是一个内存对象。

同时,创建了一个变量a,这个变量有一个变量指针指向这个内存对象,完成一次引用(reference)。这样就完成了python内存创建的过程。

 

那么python的内存是如何被管理的呢?

一。

python每一个对象都包含id,value,type。并且每个对象都有自己的头部信息,即引用计数

当对象被创建,被再次引用,作为容器对象的一个元素,或者作为函数中的一个参数时,这个对象的引用计数+1。

反之,引用计数-1。

可以用sys.getrefcount()函数来查看对象的引用计数。

二。

当对象的引用计数变为0时,即是对象需要被垃圾回收的时候。python以此方式来释放内存。

垃圾回收机制又有分代回收,标记清除等规则。对应python中的gc模块。

三。

python内存池机制

python会缓存短的字符串和数字类型的对象。当有变量去引用这些对象的,直接从内存池中取值。这是我对内存池的理解。

相关文章

 

转载于:https://www.cnblogs.com/Jupiter1994/p/10641662.html

你可能感兴趣的文章
语义web基础知识学习
查看>>
hexo个人博客添加宠物/鼠标点击效果/博客管理
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
关于WPF的2000件事 02--WPF界面是如何渲染的?
查看>>
单元测试、、、
查看>>
SVN使用教程总结
查看>>
JS 浏览器对象
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
虚拟中没有eth0
查看>>
Unity 3D游戏开发学习路线(方法篇)
查看>>
BZOJ2049[Sdoi2008]Cave 洞穴勘测(LCT模板)
查看>>
vuex插件
查看>>
2011年12月09日
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
合并单元格
查看>>
swift-初探webView与JS交互
查看>>
IOS-图片操作集合
查看>>
Android bitmap图片处理
查看>>
Android应用程序进程启动过程的源代码分析
查看>>