我想我对垃圾收集器在.Net的工作方式有了基本的了解,但最近有人问我一个我不太懂的问题。从我记忆中,问题是按照 -
的方式提出的考虑到垃圾中涉及的不同世代 收藏,你希望你的对象在哪一代?
我猜了一下并说第0代,因为这意味着一个短暂的物体并释放记忆。另一方面,当我通过一些MSDN文档时,它表明第2代对象更稳定(即长寿),我知道GC收集频率较低。
对此的正确答案是什么,还是另一个“取决于”答案?
答案 0 :(得分:5)
正确的答案当然是“正确的代”。如果一个对象是短暂的,我希望它在为短期对象优化的代中。如果我的对象是长寿的,我希望它是针对长寿命对象进行优化的一代。
如果所有对象都有一个“最佳”代,我们会将其设为默认值并取消其他对象。 GC创建者很高兴听到,生成性是他们算法中复杂性的来源; - )
答案 1 :(得分:1)
这是一个有点奇怪的问题。我也会回答第0代,因为第0代集合是迄今为止最便宜的,因此GC的开销是最小的。我认为这个问题的目的是,如果短命的物体不能生成更高的世代,那就太好了。无论如何,长寿的人都会成为上一代。