在一次采访中,有人问我是否可以将某些对象自动分配给第二代垃圾收集器,我不知道该怎么回答。
这可能吗?
也许如果对象足够大以保存在零代或第一代中?
在一次采访中,有人问我是否可以将某些对象自动分配给第二代垃圾收集器,我不知道该怎么回答。
这可能吗?
也许如果对象足够大以保存在零代或第一代中?
新分配的对象形成了新一代的对象,并且隐含地是第 0 代集合,除非它们是大对象,在这种情况下,它们会在第 2 代集合中的大对象堆上继续。
(链接:垃圾收集的基础知识)
所以是的,大对象自动进入第 2 代。
什么时候物体被认为是大的?
在 Microsoft® .NET Framework 1.1 和 2.0 中,如果对象大于或等于 85,000 字节,则将其视为大对象。这个数字是性能调整的结果。当一个对象分配请求进来并满足该大小阈值时,它将被分配到大对象堆上。这到底是什么意思?要理解这一点,解释一些有关 .NET 垃圾收集器的基础知识可能会有所帮助。
(链接:CLR 由内而外:发现大对象堆)