我正在尝试对将大约12MB加载到内存的数据集执行批量操作。我知道没有连续的地址空间可用于请求的大小时,会发生OutOfMemoryException。在只有6GB的256GB磁盘上似乎找不到12MB的连续地址空间。这是否是Azure应用程序服务可能相关,也可能无关。
我可能是错的,但是对于可能是这样还是在工作中,我并没有很好的启发。我也不太确定如何进行调试。
任何建议表示赞赏!
我不了解反对票。
除此之外,这很罕见,但我已经看到一种情况,我们有一个内存受限的设备(1GB RAM)显然用完了空间来分配一个大对象。内存管理在大型对象中有一个特殊的位置,称为大型对象堆。在我们的例子中,我们在其他地方有足够的分配,以致于内存的碎片足够多,以至于我们无法一次性分配大对象。 IIRC的快速解决方案是将数据分块到磁盘,然后以较小的位块读取。
请参阅LOH文档,这可能有助于您确定原因并针对您的情况提出潜在的解决方案。 https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/large-object-heap