Voo*_*d92 2 python memory garbage-collection list
我一直在使用python很长一段时间,我对垃圾收集,内存管理以及删除变量和释放内存的真正处理方面的几个问题感到困惑.
>>> pop = range(1000)
>>> p = pop[100:700]
>>> del pop[:]
>>> pop
[]
>>> p
[100.. ,200.. 300...699]
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,会发生这种情况.但,
>>> pop = range(1000)
>>> k = pop
>>> del pop[:]
>>> pop
[]
>>> k
[]
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,它意味着k只是指向列表'pop'.
第一部分问题:
但是,第一个代码块中发生了什么?包含[100:700]元素的内存是否未被删除,或者在创建列表"p"时是否重复?
问题的第二部分:
另外,我尝试过尽可能包含gc.enable和gc.collect语句,但两个代码中的内存利用率没有变化.这有点令人费解.python是不是没有将可用内存返回给操作系统,这不是很糟糕吗?如果我在我做过的小研究中错了,请纠正我.提前致谢.