Python对象的头部信息

熟悉Python的都知道一个概念,一切皆对象。python对象包含了两个头部信息:一个是类型标志符,另一个是引用计数器。

想要了解后者,需要继续往下看。

Python对象的垃圾收集

在内部,Python是这样来实现垃圾回收的。它在每一个对象中保留了一个计数器,计数器记录着当前对象被引用的次数。

例如:

1
a = [99, 99, 990]

此时对象 [99, 99, 990] 的引用次数会加一,注意:此处对象指的是列表,而不是变量a, a只是列表对象的一个引用。

此时如果变量a的引用不指向列表对象,那么列表对象的引用计数器变为零,就会导致它的空间被回收。

Python对象缓存机制

Python内部缓存并复用了小的整数和小的字符串,因此,对于小整数1,也许并不一定会被空间回收。

例子:

1
2
3
4
5
6
In [1]: a = 1

In [2]: b = 1

In [3]: a is b
Out[3]: True