0

在我的 C# 应用程序中,我使用gcAllowVeryLargeObjects的是因为我正在使用大型数据集进行图像处理,从而导致大量 RAM 使用。现在我想编写一些 UnitTests 并且我遇到了与没有gcAllowVeryLargeObjects.

我的设置是关于使用 Newtonsoft.Json 读取包含大型一维字节数组的 JSON 文件。我遇到的最初错误是ObjectOutOfMemoryException反序列化文件时的经典错误。异常消息是:数组尺寸超出了支持的范围

我使用它进行了管理<gcAllowVeryLargeObjects enabled="true"/>,现在 Newtonsoft.Json 没有任何问题。但是对于 UnitTest,我不知道如何设置这个运行时参数。希望你们中的一个人有一个想法。

4

2 回答 2

1

请记住,这只会扩大相关阵列的总内存占用。您仍然受限于标准 UInt32 索引大小。如果您的数组有超过 21.4 亿个数据点,它仍然会出错,因为您将超过数组中允许的条目数。

于 2021-11-09T14:15:09.787 回答
0

我找不到明确的答案。可以使用 .runsettings 文件进行设置:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <runtime>  
      <gcAllowVeryLargeObjects enabled="true" />  
    </runtime>  
  </RunConfiguration>
</RunSettings>
于 2021-05-19T19:17:49.377 回答