Tag: gcallowverylargeobjects

使用gcAllowVeryLargeObjects的OutOfMemoryException

我正在使用BinarySerializer,它有一个非常大的(尽管不是很深)项目图。 我有8GB的ram支持12Gig的交换,并且在序列化时我得到一个OutOfMemoryException,这是预期的(图表可能接近或超过2Gb)。 然而,当我使用gcAllowVeryLargeObjects它并没有更好,我仍然得到相同的exception,我肯定在应该保留在内存中的东西(至少与交换)。 有什么我可以做的来支持序列化这个/一种方法来获得相同的function集但是可能会得到结果吗? 我的序列化代码没有什么特别之处: public static byte[] Serialize(this object o) { var ms = new MemoryStream(); var bf = new BinaryFormatter(); bf.Serialize(ms, o); ms.Position = 0; return ms.ToArray(); } 我正在序列化的对象包含自身包含数组等的项目数组,但完整的图形本身不是“那么大”(它是索引数据的结果,在源处,已经只有大约1GB的大小)。 这也不是由于GC碎片造成的(压缩大堆没有帮助)。