如果您的应用程序必须对大尺寸对象(> 85000 字节)进行大量分配/取消分配,则最终会导致内存碎片,并且您的应用程序将抛出内存不足异常。
这个问题有什么解决方案,还是CLR内存管理的限制?
最佳答案
不幸的是,我见过的所有信息都只建议您自己管理风险因素:重用大对象,在开始时分配它们,确保它们的大小是彼此的倍数,使用替代数据结构(列表、树)而不是数组。这只是给了我另一个想法,即创建一个非分段列表,而不是一个大数组,拆分成更小的数组。数组/列表似乎是最常见的 IME 罪魁祸首。
这是一篇关于它的 MSDN 杂志文章:
http://msdn.microsoft.com/en-us/magazine/cc534993.aspx ,但没有那么多用处。
关于.net - 大对象堆碎片 : CLR has any solution to it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5250039/