大对象堆碎片:CLR有什么解决方案吗?

pal*_*now 7 .net garbage-collection large-object-heap

如果你的应用程序必须对大型对象进行大量的分配/解除分配(> 85000字节),它最终会导致内存碎片,并且应用程序将抛出内存不足异常.

有没有解决这个问题的方法,还是CLR内存管理的限制?

Mar*_*wul 7

不幸的是,我所见过的所有信息都只建议自己管理风险因素:重用大型对象,在开始时分配它们,确保它们的大小是彼此的倍数,使用替代数据结构(列表,树)而不是数组.这只是给了我另一个想法,创建一个非片段列表,而不是一个大型数组,分成更小的.阵列/列表似乎是最常见的罪魁祸首IME.

这是一篇关于它的MSDN杂志文章:http: //msdn.microsoft.com/en-us/magazine/cc534993.aspx,但它没有那么多用处.