本篇文章主要用作是Python中的学习笔记,根据个人理解记录python的内存管理机制以便加深理解和记忆,开发语言的内存管理是语言设计的一个重要方面,它是决定语言性能的重要因素。有兴趣的童鞋也可以顺便一起了解一下。
Python的内存管理机制:引用计数、垃圾回收、内存池机制。
一、引用计数
首先要理解的是在Python中一切皆对象,所有的变量、函数以及类都是绑定对应的对象,变量名通过赋值绑定对象的内存地址,产生一个引用关系,通过这个引用关系可以获取duix对象的值。同一个对象可以被多个变量绑定,分别会产生多个引用关系。
注:Python中变量名没有类型,类型属于对象(因为变量引用对象,所以类型随对象),即定义一个变量不需要像Java中那样先声明变量类型,Python变量直接赋值即可,赋值什么样的对象,变量就是什么类型的。
a = 3
print(a)
3
type(a)
<class 'int'>
当一个对象obj被一个变量a引用时,obj的引用计数将增加1。如果a引用了两次obj,则a的引用计数增加了2;如果此时a被另一个变量引用如:b = a ;则对象obj的引用变成了3。虽然定义了两个变量,但这里a和b两个变量其实是同时引用了obj的内存地址。我们可以通过id()函数来查看a、b绑定的地址是否相同: