python学习之内存机制
Posted 今天阳光那么好
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之内存机制相关的知识,希望对你有一定的参考价值。
不可变对象(字符串、元组)
1. a = 1
首先在内存中创建对象1,并记录对象的引用计数为1次。
id(a)
查看变量a引用的对象的内存地址
2. b = 1
内存中已存在对象1,变量b引用对象1,则对象1的引用计数为2次。
id(b)
变量b和变量a引用的是同一个对象,内存地址相同。
3. a = a + 1
在内存中创建对象2,变量a不再引用原有对象1(引用次数减为1),开始引用对象2(引用次数增为1)
a = 1
重新执行a=1,a依然指向原有对象(因为还是1)
注意:仅对短字符有效,长字符串每次new对象,即便相同,也会重新建立内存; 这里目前没有查到相关资料,但确实如此。
可变对象(数组、字典、集合)
1. a = []
在内存中创建数组对象,记录对象引用次数为1次(被a引用)
2. b = []
在内存中重新创建新对象,记录对象引用次数为1次(被b引用),a和b所在内存地址不相同
3. a.append(1)
a依然指向原有的内存地址,因为是可变对象,所以不需要在内存中重建新对象
4. a = []
重新在内存创建可变对象[],a不再指向原有对象(引用次数变为0,被回收)
以上是关于python学习之内存机制的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段