gpt4 book ai didi

c# - gen 0、gen 1、gen 2 何时准确触发?

转载 作者:太空狗 更新时间:2023-10-29 23:47:46 26 4
gpt4 key购买 nike

第 0 代:所以我读到当 gen 0 超过大小阈值时 gen 0 触发。但我也读到GC不是在"new"时执行的,因为"new"只是向前滑动一个地址。那么,它什么时候检查它是否超过了触发 gen 0 GC 的阈值?

第 1/2 代:gen 1/2 是否有自己的触发 GC 的大小阈值?他们什么时候考虑阈值?是幸存者晋升为gen的时刻吗?

这是否意味着要发生第 1 代 GC,它首先检查第 0 代,然后将它们提升到第 1 代,只是发现第 1 代超过了阈值,因此它检查第 1 代,然后再次检查第 0 代?

这是否意味着要发生第 2 代 GC,它首先检查第 0 代,然后将它们提升到第 1 代,只是发现第 1 代已超过阈值,因此它会检查第 1 代,并再次检查第 0 代。然后将 gen 0 提升为 gen 1,将 gen 1 提升为 gen 2,却发现 gen 2 超过了阈值,因此它检查 gen 2,再次检查 gen 1,然后再次检查 gen 0?

最佳答案

CLR初始化后,最先加入托管堆的对象被定义为Gen0。当GC执行时,未被收集的对象的代数会增加1级,成为Gen1。之后创建的对象仍然是 Gen0。随着对象的创建,只有当Gen0对象释放的内存不足以创建新对象,并且Gen1中的容量超过容量时,GC才会同时收集Gen0和Gen1对象。之后,Gen1 中未收集到的对象将成为 Gen2,Gen0 中未收集到的对象将成为 Gen1。之后创建的对象仍然是 Gen0。

关于c# - gen 0、gen 1、gen 2 何时准确触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7911717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com