[C#OutOfMemoryException for 12MB data

问题描述 投票:-1回答:1

我正在尝试对将大约12MB加载到内存的数据集执行批量操作。我知道没有连续的地址空间可用于请求的大小时,会发生OutOfMemoryException。在只有6GB的256GB磁盘上似乎找不到12MB的连续地址空间。这是否是Azure应用程序服务可能相关,也可能无关。

我可能是错的,但是对于可能是这样还是在工作中,我并没有很好的启发。我也不太确定如何进行调试。

任何建议表示赞赏!

c# .net .net-core out-of-memory
1个回答
0
投票

我不了解反对票。

  1. 有人禁用了页面文件吗?
  2. 您能否增加页面文件的大小(是否消失了?)
  3. 您正在运行多少RAM?

除此之外,这很罕见,但我已经看到一种情况,我们有一个内存受限的设备(1GB RAM)显然用完了空间来分配一个大对象。内存管理在大型对象中有一个特殊的位置,称为大型对象堆。在我们的例子中,我们在其他地方有足够的分配,以致于内存的碎片足够多,以至于我们无法一次性分配大对象。 IIRC的快速解决方案是将数据分块到磁盘,然后以较小的位块读取。

请参阅LOH文档,这可能有助于您确定原因并针对您的情况提出潜在的解决方案。 https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/large-object-heap

© www.soinside.com 2019 - 2024. All rights reserved.