我有一个 OutOfMemoryException 较早,无法弄清楚它的用途。这根本没有意义。在我的代码中四处挖掘,突然想起某个地方忘记了检查null,在这种特殊情况下,它正是(并且应该)。那不应该导致 OutOfMemoryException 我认为,但我当然将其修复。当我这样做时,例外不再出现了!

因此,我再次删除了支票,研究了我得到了更多的例外。事实证明它有一个 类型的创新感 NullReferenceException 还有一个堆栈痕迹 很多 更有意义。

但是为什么我得到 OutOfMemoryException?这以前从来没有发生过……对我来说没有意义...


很想给出更多的背景,但是如果不必上传整个项目,我不能说太多了,我不能(无论如何您都不想阅读:P)。但是它所遇到的特定位置看起来像:

            {
                foreach (var exportParameter in exportParameters)
                {
                    // Copy to local
                    var ep = exportParameter;

                    // Load stored values from db
                    ...
                }

                int i = 1;
                exportParameters
                    .OrderBy(ø => ø.Sequence)
                    .ForEach(ø => { if (!ø.Locked) ø.Sequence = i++; });
            }

解决方案是放一个 if(exportParameters != null) 在代码块之前。 exportParameters 是一个 List<ExportParameter>, ,除了失败的情况 null.

有帮助吗?

解决方案

您可能面临着限制执行区域旨在预防的问题 - 也就是说,您的捕获条款所依赖的某些代码的打击正在导致内存状况。

(为了回应Svish的评论,这是谷歌搜索短语时的第一个链接: http://msdn.microsoft.com/en-us/library/ms228973.aspx)

其他提示

除了明显的理由获得Omexception之外,如果您仍然有可用的内存,您还可以得到它,只是不足以满足所要求的内容。如果您可以可靠且相对近距离启动,那么您可能会意外地要求比打算更多的内存(即请求一个非常大的数组)。您可以发布一些代码还是至少描述您的分配模式?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top