擅长:python、mysql、java
<p>请记住(周期性)<em>垃圾收集</em>和<a href="https://docs.python.org/2/c-api/intro.html#objects-types-and-reference-counts" rel="nofollow"><em>reference-counting</em></a>是两种不同的机制。在你的例子中,ref计数是相关的。在</p>
<p>ref count为零的对象将立即释放(无需等待周期性gc运行)。在</p>
<p><strong>[正如@delnan指出的,ref计数并不是python的一个官方“特性”,而是CPython的具体实现细节。然而,值得了解的是]</strong></p>
<p>在您的例子中,您得到两个并发的现有对象。事情发生的顺序是:</p>
<pre><code>a new object is created, and is referenced by name "var"
[you now have one existing object]
while True:
a new object is created
[you now have two existing objects]
it is referenced by name "var" (refcount += 1)
old object is no longer referenced by name "var" (refcount -= 1)
old object's refcount is now 0, it gets deallocated
[you now have one existing object]
</code></pre>
<p>如果只希望存在一个并发对象,可以添加<code>del var</code>作为循环中的第一行。在</p>