Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么大型对象堆会增长而不是抛出异常?_C#_.net_Memory Management_Fragmentation_Large Object Heap - Fatal编程技术网

C# 为什么大型对象堆会增长而不是抛出异常?

C# 为什么大型对象堆会增长而不是抛出异常?,c#,.net,memory-management,fragmentation,large-object-heap,C#,.net,Memory Management,Fragmentation,Large Object Heap,在前面的一个问题中,我问了。我仍然看到这些问题,但现在我试图弄清楚为什么LOH的大小似乎在增长和收缩,但我仍然看到OutOfMemoryExceptions,这与其他人报告的LOH碎片化的情况相符 为什么一个对StringBuilder.EnsureCapacity的调用会为我抛出OutOfMemoryException,而另一个来自其他地方的调用会导致LOH的大小不断扩大(根据性能计数器,LOH正在增长和缩小)?我不确定,但我会尝试两种方法: 检查应用程序中已分配的非托管内存,并使用GC.Ad

在前面的一个问题中,我问了。我仍然看到这些问题,但现在我试图弄清楚为什么LOH的大小似乎在增长和收缩,但我仍然看到OutOfMemoryExceptions,这与其他人报告的LOH碎片化的情况相符


为什么一个对StringBuilder.EnsureCapacity的调用会为我抛出OutOfMemoryException,而另一个来自其他地方的调用会导致LOH的大小不断扩大(根据性能计数器,LOH正在增长和缩小)?

我不确定,但我会尝试两种方法:

  • 检查应用程序中已分配的非托管内存,并使用GC.AddMemoryPressure方法通知MemoryManager更好地处理此问题
  • 在进行大型分配调用之前使用MemoryFailPoint类。这样,您就有机会避免应用程序中的大繁荣。释放一些资源,然后重试

  • 编辑:第三种方法可能是创建更多的appdomains,并在这些额外的appdomains中处理这些大问题。

    我转到了原始文章,并在那里发布了我认为可能是您的问题。去看看吧