摘要:python有如下特点:
- 变量无须事先声明
- 变量无须指定类型
- 程序员不用关心内存管理
- 变量名会被回收
- del语句能够直接释放资源
Python中,对象的类型和内存占用都是运行时确定的,在赋值时,解释器会根据语法和右侧的操作数来决定新对象的类型,在对象创建后,一个该对象的应用会被赋值给左侧的变量。
1.Python采用引用计数的计数来追踪内存中的对象
增加引用计数例子:
#创建一个浮点型对象并将其引用赋值给x, 此时引用计数为1
x=3.14
#创建了一个指向同一对象的别名y,并没有为y创建一个新对象,此时引用计数变为2
y=x
增加引用方法:
- 对象被创建:x=3.14
- 另外的别名被创建: y=x
- 作为参数传递给函数(本地引用): foo(x)
- 作为容器对象中的一个元素: mylsit=[12,x,4]
减少引用计数例子:
foo='xyz' #引用计数为1
bar=foo #引用计数为2
foo=123 #引用计数为1
减少引用方法:
- 一个本地引用离开其作用范围,比如一个函数运行结束时
- 对象别名被显示销毁:del y
- 对象的一个别名被赋值给其他对象
- 对象被从一个容器对象中移除:mylist.remove(x)
- 容器对象本身被销毁: del mylist
2.垃圾收集
不再使用的内存会被垃圾收集的机制释放