- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 BinarySerializer 和一个相当大(虽然不是很深)的项目图。我有 8GB 的 ram,由 12Gig 的交换支持,并且在序列化时出现 OutOfMemoryException,这是预期的(图表可能接近或超过 2Gb)。
然而,当我使用 gcAllowVeryLargeObjects 时,情况并没有好转,我仍然遇到同样的异常,而且我肯定正在处理应该保存在内存中的东西(至少是交换)。
有什么我可以做的来支持序列化这个/一种获得相同功能集但可能以 chunks 形式获得结果的方法吗?
我的序列化代码没有什么特别的:
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 碎片(压缩大堆没有帮助)。
最佳答案
默认情况下,AnyCPU 在 x86 和 x64 操作系统上都作为 32 位进程运行。因此,即使在 x64 操作系统上设置了 gcAllowVeryLargeObjects
,您也会遇到 4GB 的地址空间限制(x86 上为 2GB)。
要更改取消选中解决方案属性 -> “构建”选项卡上的“首选 32 位”属性。
详细信息和历史记录可以在以下答案中找到:What is the purpose of the "Prefer 32-bit" setting in Visual Studio 2012 and how does it actually work?
关于c# - OutOfMemoryException 与 gcAllowVeryLargeObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23206496/
在几次 outOfMemory 异常之后,我启用了“gcAllowVeryLargeObjects”,它工作得很好。我现在想知道为什么它不是 C# 中的默认选项(在 64 位平台上)。 是否纯粹出于兼
我如何在后面的代码中用 C# 编写这个? gcAllowVeryLargeObjects 我不能使用配置文件。 下面是配置文件版本 最佳答案 你不能,因为这配置了运行时
我正在开发一个关于排序列表的小程序。现在,我需要一个需要超过 2GB RAM 的阵列。在我的研究过程中,我找到了这个属性,但我不知道在哪里设置它。我正在使用单声道。 最佳答案 For very lar
我正在使用 BinarySerializer 和一个相当大(虽然不是很深)的项目图。我有 8GB 的 ram,由 12Gig 的交换支持,并且在序列化时出现 OutOfMemoryExceptio
现在没有 app.config,如何将 gcAllowVeryLargeObjects 设置为 true 以便可以分配大数组? 最佳答案 可以使用对应的environment variable ;只需
我无法理解如何为辅助角色设置 gcAllowVeryLargeObjectsruntime 参数。我在 app.config 中设置了这个婴儿车。但这不起作用。据我了解,我需要以某种方式在 wotke
我无法理解如何为辅助角色设置 gcAllowVeryLargeObjectsruntime 参数。我在 app.config 中设置了这个婴儿车。但这不起作用。据我了解,我需要以某种方式在 wotke
我是一名优秀的程序员,十分优秀!