内存管理机制
1.堆和栈
内存区域中分为堆区间和栈区间
栈区间的内存的开辟和释放是自动的
堆区间的内存是手动的开辟和释放的
内存管理管理的是堆区间:
2.数据的存储
a.python中所有的数据都是对象,都是存在堆中的
b.python中所有的变量存储的都是存在堆中的数据的地址。(存了对象地址的变量,又叫对象的引用)
c.默认情况下,创建对象就会在堆中去开辟空间存储数据,并且将地址返回,如果对象是数字或字符串会先做缓存,而且使用的时候会先去缓存中看之前有没有存过,如果有就直接返回之前的数据的地址,如果没有才会开辟新的空间储存
3.数据的销毁
python中通过‘垃圾回收机制’来管理内存的释放
原理:看一个对象是否销毁,就看这个对象的引用计数是否为0,为0就销毁,不为0就不销毁
引用计数:对象的引用个数
- 注意:垃圾回收其实是回收引用计数是0的对象,但系统不会时时刻刻的检测对象的引用计数是否为0
而是隔一段时间检测一次
from sys import getrefcount
'''
getrefcount(对象)- 获取指定对象的引用计数
3.1.增加引用计数 : 使用变量存对象的地址
list1 = [1] #d对象[1]的引用计数是1
list2 = list1 # 对象[1]的引用计数是2
list3 = [list1,100] #对象[1]的引用计数是3
print(getrefcount(list1))
3.2.减少引用计数
a.删除引用
b.让当前对象的引用成为别的对象的引用
网友评论