我偶尔会遇到手动调用gc.collect()
的代码,但目前还不清楚原因。出于什么原因,如果有的话,手动运行垃圾收集是否有利,而不是让Python自动处理它?</ p>
答案 0 :(得分:8)
总之,效率。
如果您使用指针引用某些内容,则它正在使用内存。即使你停止指向它,它仍然占用内存很短的时间。
Python的垃圾收集用于使用引用计数。引用计数是一种明智的方式来判断某些东西何时不再需要内存(通过检查其他对象引用它的频率)。
不幸的是,引用计数仍然是一个计算因此它会降低运行它的效率(特别是在不需要时),所以Python现在使用计划垃圾收集。
问题在于,在某些特定功能中,Python现在不会立即进行垃圾收集,因为它会不再使用某些东西(如引用计数的情况),因为垃圾会定期收集垃圾。
您通常需要在许多服务器应用程序或大规模计算中手动运行垃圾收集,其中垃圾收集中的轻微违规对于释放内存很重要。
以下是Digi.com的link,如果我的解释不清楚,可以完美地总结。我希望这有助于布兰登!