当前位置: 首页 > 编程语言 > C#

OutOfMemoryExceptionwithgcAllowVeryLargeObjectsshare

时间:2023-04-10 18:48:01 C#

OutOfMemoryExceptionwithgcAllowVeryLargeObjects我正在使用BinarySerializer,它有一个非常大(虽然不是很深)的项目图。我有8GB的??ram支持12Gig的交换,并且在序列化时我得到一个OutOfMemoryException,这是预期的(图表可能接近或超过2Gb)。但是,当我使用gcAllowVeryLargeObjects时,情况并没有好转,我仍然遇到同样的异常,而且我确定我正在处理应该保留在内存中的内容(至少通过交换)。有什么我可以做的来支持序列化这个/一种获得相同功能集但可能有结果的方法吗?我的序列化代码没有什么特别之处:publicstaticbyte[]Serialize(thisobjecto){varms=newMemoryStream();varbf=newBinaryFormatter();bf.Serialize(ms,o);多发性硬化症。位置=0;返回ms.ToArray();我正在序列化的对象包含一个项目数组,它本身包含数组等,但完整的图形本身并不是“那么大”(它是索引数据的结果,在源头上,大小已经只有大约1GB).这也不是由于GC碎片(压缩大堆无济于事)。默认情况下,AnyCPU在x86和x64操作系统上都作为32位进程运行。因此,即使在x64操作系统上设置gcAllowVeryLargeObjects也会达到4GB地址空间限制(在x86上为2GB)。要更改,请取消选中“解决方案属性”->“构建”选项卡上的“首选32位”属性。详细信息和历史记录可以在这个答案中找到:Whatisthepurposeofthe"prefer32-bit"settinginVisualStudio2012?它实际上是如何工作的?以上就是C#学习教程:使用gcAllowVeryLargeObjects的OutOfMemoryException的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: