为什么大对象堆会增长而不是抛出异常?
在上一个问题中,我问最大化 LOH 上可分配的最大块的可能的编程方式。我仍然看到这些问题,但现在我试图弄清楚为什么 LOH 的大小似乎会增大和缩小,但我仍然看到 OutOfMemoryExceptions,这与其他人报告的由于 LOH 碎片所致的情况相符。
例如,为什么对 StringBuilder.EnsureCapacity 的一次调用可能会抛出 OutOfMemoryException 异常,但其他地方的另一次调用会导致 LOH 的大小扩大(根据性能计数器,它会增大和缩小)?
In a previous question I asked possible programatic ways of maximising the largest block allocatable on the LOH. I'm still seeing the problems, but now I'm trying to get my head around why the LOH seems to grow and shrink in size, yet I'm still seeing OutOfMemoryExceptions that tally with what others have reported as being due to LOH fragmentation.
Why might one call to, for example, StringBuilder.EnsureCapacity throw an OutOfMemoryException for me, but another call from somewhere else result in the LOH expanding in size (according to the performance counters, it is growing and shrinking)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不确定,但我会尝试两种方法:
编辑:第三种方法可能是创建更多应用程序域并在额外的应用程序域中处理大的东西。
im not sure but i would try 2 ways:
edit: a 3rd way may be to create more appdomains and to handle that big stuff in that extra appdomains.
我转到原始文章并在那里发布了我认为可能是您的问题的内容。去看看吧。
I went to the original article and posted what I think might be your problem there. Go check it out.