python内存管理机制

118 阅读1分钟
  1. 引用计数 前言:这里使用python3中的sys模块中的getrefcount()方法

#定义一个类

class Person(object): pass

#实例化对象

person = Person()

#输出person的引用计数的个数

print(sys.getrefcount(person))

第一部分:

image.png

这里输出结果为2,解析:使用sys.getrefcount()函数时,函数会引用一次,person指向Person类又引用了一次。

p = person

p1 = p

p2 = p1

p3 = p2

image.png

或者

p = person

p1 = person

p2 = person

p3 = person

image.png

del p1 后引用计数会减1

第二部分:小整数池和字母: Python为了优化速度,使用了小整数对象池(范围[-5,256]), 避免频繁申请和销毁内存空间。这些整数使用同一个对象不会被垃圾回收,单个字符同理。

image.png

image.png