python 内存

Python内存管理


[TOC]

垃圾回收

动态语言:

  • 对象和类型和内存都是运行是确定(内存地址分配是在运行是自动判断变量类型并对变量赋值)

引用计数

  • 每个对象都维护一个指向该对象的引用计数
a = 1
b = 1
id(a) = 内存地址数
id(b) = 相同的内存地址数
  • Python只会缓存整数和短小的字符,对于其它非整数和短小的字符的对象,创建一个新的对象
a = 'this is a string'
b = a
print (a is b)
#return False
  • 引用计数
- 使用`from sys import getrefcount`导入包
- 需要注意的是,当使用某个引用作为参数,传递给getrefcount()时,参数实际上创建了一个临时的引用。因此,getrefcount()所得到的结果,会比期望的多1

  • 对象引用对象

Python的一个容器对象(container),比如表、词典等,可以包含多个对象。实际上,容器对象中包含的并不是元素对象本身,是指向各个元素对象的引用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在比较浅层次上我们通过说明如下问题来进一步深入了解python内存管理机制:Python中到底是“传引用”还是“传...
    tdeblog阅读 2,508评论 0 0
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,630评论 1 118
  • python是动态类型,对象是用于存储数据。在python中,各种数字,字符串,列表,字典都是对象,相当于java...
    肥肥米怡阅读 936评论 0 3
  • 参考:http://www.cnblogs.com/CBDoctor/p/3781078.html 先从较浅的层面...
    麦兜胖胖次阅读 732评论 0 1
  • 时间,其实是一个最没有耐心的东西,它让所有人都在往前走,不管你有没有好好的认真对待过这个世界,都在不知不觉中划...
    liuchunyu阅读 215评论 0 0