python的内存管理
01.python中万物皆对象,python会为每个对象分配一块内存空间用于存储。
- python的变量与对象:
- 变量,通过变量指针指向具体对象的内存空间,取对象的值。
- 变量没有类型,类型属于对象;变量引用什么类型的对象,变量就是什么类型的。
- 对象,类型已知,每个对象都包含一个头部信息,存放对象的类型标识符和引用计数器。
- 变量,通过变量指针指向具体对象的内存空间,取对象的值。
- python中使用id()方法返回一个对象的内存地址,比如:
a = 100
b = 100
print(id(a))
print(id(b))
a = [1, 2, 3]
b = a
print(id(a))
print(id(b))
02.python编程中一般无需关心变量的存亡,一般也不用关心内存的管理。
- python使用引用计数器记录所有对象的引用数:
- 计数增加,赋值给其他变量就增加引用计数器,比如x=3;y=x的赋值语句就会增加内存中’3’对象的引用计数。
- 计数减少:
- 函数运行结束时,局部变量就会被自动销毁,对象引用计数减少。
- 变量被复制给其他对象,比如x=3;y=x;x=4的赋值语句就会减少内存中’3’对象的引用计数。
- python中,当对象引用数变为0时,该对象就可以被垃圾回收GC。
- python的内存垃圾回收会在合适的时间自动执行,无需人工干预。
- python中使用getrefcount()方法返回一个对象的引用计数,比如:
import sys
x = [1, 2, 3]
print(sys.getrefcount(x))
y = x
print(sys.getrefcount(x))
x = [5, 6, 7]
print(sys.getrefcount(x))
文档更新时间: 2020-03-28 20:52 作者:闻骏