【发布时间】:2019-01-12 21:55:07
【问题描述】:
例如,当我想创建大数组时,我的内存不足。
var size = 20000;
var matrix = new decimal?[size, size];
我已设置 64 位项目并取消选中“首选 32 位”。
我在App.config中添加了
<runtime>
<gcAllowVeryLargeObjects enabled="true"/>
</runtime>
我有 16 GB 的 RAM。 我忘记了什么?
【问题讨论】:
-
您有多少可用内存?请注意,20.000 * 20.000 nullable
Decimal值的数组将需要大约 9.6GB 的可用连续内存供您的程序使用。 -
请注意,
Decimal的字节大小为 16。因此,您尝试分配一个需要 16*20000*20000 字节(大约 6 GB)的数组。请注意,即使您有足够的可用 RAM,您也可能会遇到该异常。所需的 6 GB 需要在程序的进程地址空间中作为连续内存块使用;如果不是这种情况,则会发生相同的异常... -
我有 16 GB 内存
-
@elgonzo,你忘了计算
Nullable足迹
标签: c#