覆盖变量时,Python中的内存位置会发生什么变化?

Vir*_*liu 7 python python-3.x

In [1]: class T(object):
   ...:     pass
   ...:

In [2]: x = T()

In [3]: print(x)
<__main__.T object at 0x03328E10>

In [4]: x = T()

In [5]: print(x)
<__main__.T object at 0x03345090>
Run Code Online (Sandbox Code Playgroud)

何时T()释放分配给第一个对象(0x03328E10)的内存位置?是在x覆盖变量还是运行垃圾收集器或脚本结束时?

我假设它是垃圾收集器运行的时候,但我不知道如何测试这个假设.

Dan*_*man 4

Python 内存管理大部分是通过引用计数完成的,而不是垃圾回收。当引用计数变为零时,内存可用于重新分配。

垃圾收集器仅在存在循环引用时发挥作用,但这里的情况并非如此。