Python中的gc代数是什么意思?

3

我是Python的新手,仍在学习中。目前我正在尝试一下gc模块(垃圾收集器)。有一点不太清楚:什么是generation?我知道有三代,但背后的概念是什么?


https://dev59.com/D2855IYBdhLWcg3wMBTV - pavel_form
谢谢提供链接。我知道这个纪录片和GC的基本操作,但是“代”的原理对我来说并不完全清楚。所以,为什么会有3代,以及与每个3代相关联的对象的规则是什么? - Thomas W.
1个回答

1
希望有所帮助... (翻译自法语维基百科): 并非所有数据的寿命都相同。有些数据需要在创建后不久清除,而其他数据则会在程序执行期间保留(全局变量等)。 一种解决方案是要求程序根据其可能的寿命“标记”这些数据。但这将是一个非常繁重的解决方案,因为数据通常是由库函数创建的,我们需要将它们的寿命作为参数提供。
生成系统强度更小。垃圾收集器创建了几代层次结构,从最年轻的到最老的。新创建的数据通常放置在最年轻的一代中。在这个年轻的一代中经常进行垃圾收集。那些没有被收集和销毁的数据则被移动到较旧的一代中,以此类推。其想法是具有较短寿命的数据不会到达较老的一代(如果它们在被GC发现时刚刚分配,则可以)。
通常,有2或3个新生代,每一代都使用不同的算法,通常最年轻的一代使用非增量算法,因为它很轻巧,垃圾回收时间很短。较旧的代使用增量算法进行回收。
调整分代垃圾回收器可能很困难,因为最年轻的一代的大小会严重影响计算。最佳选择取决于应用程序、CPU类型和内存架构。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接