当.NET中固定对象使用的内存超过短暂段的大小时会发生什么?

时间:2017-11-22 19:42:40

标签: .net memory garbage-collection

从这里找到的问题: GC behavior when pinning an object

看起来将对象固定在内存中(通过fixed关键字?我对对象固定的使用并不十分熟悉,我不知道在链接问题所描述的意义上是否有多种方法可以这样做)阻止它在垃圾收集代中的推广,那么如果固定对象的总消耗内存实际上超过短暂的段大小会发生什么呢?

我主要是出于学术上的好奇心。在我的搜索中我无法找到关于这种情况的任何信息,虽然我当然可以亲自测试一下,但是在我深入研究可能有点耗时的实验/调查之前,我想检查是否有人已经知道。

编辑:经过一些重新阅读,我怀疑GC的行为可能总是将哪个段视为对象周围的哪一代进行转移,唯一的事情是通过压缩步骤中的钉扎来防止。不幸的是,我在这里找到的文档:https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals在这一点上仍然有点不清楚。

假设GC总是执行一个混乱,哪个部分的内存被认为是一代,并且对象的唯一移动是压缩步骤,固定的对象总是会在第2代结束,然后才能超过短暂的部分。在这种情况下,根据评论,我的问题完全无效。

0 个答案:

没有答案