问题标签 [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.
c# - .Net 中非常大的集合导致内存不足异常
我正在测试.Net 中的集合有多大。从技术上讲,任何集合对象都可以增长到物理内存的大小。
然后我在一个服务器上测试了下面的代码,它有 16GB 内存,运行 Windows 2003 服务器和 Visual Studio 2008。我测试了 F# 和 C# 代码,并在运行时查看了任务管理器。我可以看到,在大约增长 2GB 内存后,程序因内存不足异常而崩溃。我确实在属性页中将目标平台设置为 x64。
我对C5集合库做了同样的测试。结果是 C5 中的字典可能会用完整个内存。代码使用 C5:
有谁知道为什么?
c# - .NET 中的数组分配
问题是关于.net 中数组的分配。我在下面有一个示例程序,其中我可以获得的最大数组是长度。我将长度增加到 +1,它给出了 outofMemory 异常。但是如果我保持长度并删除注释,我可以分配 2 个不同的大数组。两个数组都小于 .net 允许的 2 GB 对象大小,总内存也小于虚拟内存。有人可以提出任何想法吗?
.net - Array.zeroCreate 和 Array.init 之间的区别
我想向同事展示你可以分配超过 2GB 的内存,所以我做了一个小测试应用程序。
这很有效,您实际上会看到该过程愉快地占用了系统的内存。但是,它需要一些时间 - 因此Array.Parallel.init
.
我注意到,相同的代码不起作用,如果我用
更准确地说,没有数据被分配,也不需要时间。
所以我的问题是;Array.zeroCreate 和 Array.init 在语义上有什么区别?
我知道每次Array.init
都会运行我的konst 0uy
函数,这可以解释时差。但是为什么不Array.zeroCreate
分配内存呢?
c# - 你如何使用代码隐藏编写 gcAllowVeryLargeObjects
我如何在后面的代码中用 c# 编写这个?gcAllowVeryLargeObjects 我不能使用配置文件。
下面是配置文件版本
c# - 带有 gcAllowVeryLargeObjects 的 OutOfMemoryException
我正在使用带有相当大(虽然不是很深)的项目图的 BinarySerializer。我有 8GB 的 ram 由 12Gig 的交换支持,并且在序列化时我得到了一个 OutOfMemoryException ,这是预期的(图形可能接近或超过 2Gb)。
但是,当我使用 gcAllowVeryLargeObjects 时,它并没有更好,我仍然遇到相同的异常,并且我肯定正在处理应该保存在内存中的东西(至少在交换时)。
我能做些什么来支持序列化这个/一种获得相同功能集的方法,但可能会以大块的形式获得结果?
我的序列化代码没有什么特别之处:
我正在序列化的对象包含项目数组,这些项目本身包含数组等,但完整的图形本身并不是“那么”大(它是索引数据的结果,在源头,大小已经只有 1GB 左右)。
这也不是由于 GC 碎片(压缩大堆没有帮助)。
azure - 如何为 AzureWorker 角色将 gcAllowVeryLargeObjects 设置为 true?
我无法理解如何为工作角色设置 gcAllowVeryLargeObjectsruntime 参数。我在 app.config 中设置了这个婴儿车。但它不起作用。据我了解,我需要以某种方式在 wotker 主机的配置文件中对其进行配置。
更新:基于答案的最终解决方案
服务定义.csdef
下一个文件应作为内容添加到工作项目,并始终复制本地
启动.ps1
我的启动.cmd
c# - gcAllowVeryLargeObjects 的可能缺点?
在几次 outOfMemory 异常之后,我启用了“gcAllowVeryLargeObjects”,它工作得非常好。我现在想知道为什么它不是 C# 中的默认选项(在 64 位平台上)。
是出于纯粹的兼容性原因吗?还是我错过了 gcAllowVeryLargeObjects 的主要缺点?
c# - 超大阵列
我必须使用大小为 34000x34000 项的二维数组进行数学计算。
明显的问题 - CLR 不可能将如此大的数据部分存储在内存中。我尝试使用MemoryMappedFile
,但是当我尝试为对象创建查看器时它也失败了:MemoryMappedFile.CreateViewAccessor()
。还有其他已经存在的存储大型数组的方法吗?(因为我没有太多时间尝试实现自定义大数据存储)
谢谢
c# - OutOfMemoryException 使用 Bitmap 调整大图像大小
我想在我的网站中调整图像的大小,但是当我使用 Bitmap 加载 14032*19864(png 扩展名)的图像时,OutOfMemoryException
会抛出一个。我的编译器配置是any cpu
. 我在怀疑运行环境是否是x64
. 代码如下:
异常发生在以下行
c# - gcallowverylargeobjects 没有解决 C# 中的维度限制
在我的 C# 代码中,我需要包含一个大小为 13805*55223 的矩阵;我相信这不是那么大。
为了克服 RAM 的限制,我使用了 gcAllowVeryLargeObjects,并且我还没有选中更喜欢 32 位系统。
做了所有这些,我仍然面临“数组维度超出支持的范围”错误!
感谢您为处理此问题提供的任何帮助。