问题标签 [gcallowverylargeobjects]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - 你如何创建一个大数组?
给定
并r.GetBytes(...)
返回Int64
SinceArray.zeroCreate
和Array.init
takeInt32
如何创建一个可能大于的空数组Int32.MaxValue
?
c# - 具有超过 65535^2 个元素的二维数组 --> 数组尺寸超出了支持的范围
我有一台具有 128 GB RAM 的 64 位 PC,我正在使用 C# 和 .NET 4.5。我有以下代码:
我知道<gcAllowVeryLargeObjects enabled="true" />
并已将其设置为 true。
为什么一个多维数组不能有超过 4294967295 个元素?我看到了以下答案https://stackoverflow.com/a/2338797/7556646。
我还检查了gcAllowVeryLargeObjects的文档,我看到了以下评论。
数组中的最大元素数为UInt32.MaxValue (4294967295)。
我不明白为什么会有这个限制?有解决方法吗?是否计划在即将发布的 .net 版本中取消此限制?
我需要内存中的元素,因为我想计算例如使用英特尔 MKL 的对称特征值分解。
c# - Array.Copy --> 不支持大于 2GB 的数组
我正在使用Array.Copy Method (Array, Array, Int64)。我有以下静态方法
和下面的代码来测试它
我知道<gcAllowVeryLargeObjects enabled="true" />
并已将其设置为 true。
我在Array.Copy Method (Array, Array, Int64)的文档中看到,长度参数有以下注释。
一个 64 位整数,表示要复制的元素数。整数必须介于零和Int32.MaxValue之间,包括在内。
我不明白为什么当类型是时长度参数有这个限制Int64
?有解决方法吗?是否计划在即将发布的 .net 版本中取消此限制?
c# - 将正则表达式与我的自定义“BigStringBuilder”类集成
由于.NET Framework 有大约 21.5 亿个元素限制(即使考虑到 64 位 Windows、.NET 4.5+ 和 gcAllowVeryLargeObjects),我需要创建自己的BigStringBuilder来处理超大字符串。
不幸的是,现在我需要在课堂上使用正则表达式。似乎存在代码以在 StringBuilders 上运行更简单的 Regex 风格,尽管它显然没有经过很好的测试并且仅支持*
(替换许多字符)和?
(替换单个字符)。
无论如何,我没有使用 StringBuilder,如前所述,我使用的是我自己的 BigStringBuilder 类,其中基本的底层结构是一个 char 数组列表(即:)List<char[]> c = new List<char[]>();
。要检索巨型字符串中的任何字符,使用“聪明”索引器来访问矩形结构:
老实说,这并不是那么“聪明”,但这确实意味着所有字符串数据都可能分散在 List 中的众多 char 数组中。
我正在寻找允许 Regex(包括Regex.Replace()
)与此 BigStringBuilder 类一起工作的最有效方法或任何见解,请记住字符串可能比 2GB 大得多。
c# - 为什么 C# 数组仍然限制在约 21 亿个元素中
在 .Net 4.5gcAllowVeryLargeObjects
中引入了允许 64 位系统大小大于 2gb 的数组。然而,数组曾经(并且仍然)被限制在大约 42 亿个元素和大约 21 亿个维度中。为什么?
对它没有兴趣,还是存在阻止他们在 .Net 核心类(数组、列表等)中使用字长索引器的实际问题?
C# 已经允许自定义类中的长类型索引器,并且将索引器从 int 更改为 long 以用于 64 位构建将是非破坏性的(我相信),因为 int 始终可以转换为 long。
c# - gcAllowVeryLargeObjects 已设置但仍导致 System.ArgumentOutOfRangeException
我有点没有想法。使用以下代码,我尝试实例化一个大于 2GB 的字节数组:
每次它都会导致一个System.ArgumentOutOfRangeException
异常的消息arrays larger then 2GB are not supported
。
我的 App.config 目前如下:
此外,该项目的目标平台是x64
我会很感激任何想法。如果缺少任何信息,我会尽快更新问题。
更新 1
我也试过uint.MaxValue
json - 单元测试中的 gcAllowVeryLargeObjects
在我的 C# 应用程序中,我使用gcAllowVeryLargeObjects
的是因为我正在使用大型数据集进行图像处理,从而导致大量 RAM 使用。现在我想编写一些 UnitTests 并且我遇到了与没有gcAllowVeryLargeObjects
.
我的设置是关于使用 Newtonsoft.Json 读取包含大型一维字节数组的 JSON 文件。我遇到的最初错误是ObjectOutOfMemoryException
反序列化文件时的经典错误。异常消息是:数组尺寸超出了支持的范围。
我使用它进行了管理<gcAllowVeryLargeObjects enabled="true"/>
,现在 Newtonsoft.Json 没有任何问题。但是对于 UnitTest,我不知道如何设置这个运行时参数。希望你们中的一个人有一个想法。