为什么在Python中默认的GC生成阈值设置为(700、10、10);而后两个数字10、10却如此小?
这么低的门槛会导致更多的收藏吗?
发布于 2017-09-25 07:38:32
阈值是相对于上一代的乘数。来自文档
为了决定何时运行,收集器会跟踪自上次集合以来的number对象分配和释放位置。当分配数减去释放位置的数量超过
threshold0时,集合将启动。最初只检查第一代0。如果自第二代0被检测以来,第一代和第二代threshold11被检测的次数超过了1次数,那么对第一代1也进行了检测。类似地,在收集生成threshold22**.**之前, 控制代的集合数。
大胆强调我的。
因此,只有当第0代运行了10次时,第1代才能运行。由于第0代只运行每700个周期(分配增量-去分配)周期,这意味着第1代运行每10 *700个== 7.000周期。第二代每10 * 10 * 700 == 70.000周期运行一次。
https://stackoverflow.com/questions/46399738
复制相似问题