IObjectList.EnsureRelatedObjects中的OutOfMemoryException

时间:2018-06-12 11:42:56

标签: exception out-of-memory mdriven

我有这行代码:

IObjectList allHolders = allHandlers.EnsureRelatedObjects("Holders");

此时的进程内存使用量约为3 GB,allHandlers包含约16,000个对象。 Holders类不是很大,但应该加载大约50000个对象。

我实际上可能耗尽了系统内存,但我想知道MDriven本身的这些部分是否存在任何限制,这可能会引发此异常。

1 个答案:

答案 0 :(得分:1)

应该没有严格的内部限制。如果您使用的是64位且未明确设置x86,则只应应用物理限制。

如果我们需要大块 - 在传输过程中可能就是这种情况 - 我们可能会遇到内存不足的异常,因为没有足够空间存在这么大的块 - 即使较小的块中有大量碎片化的可用内存。 / p>

如果这是您所看到的,您可能希望将数据分成2个或更多部分。 您还可以调整我们如何在内部进行大块提取的分块设置: 在IPersistenceService中查看此属性

    /// <summary>
    /// EnsureRange will use this pagesize when chunking up fetches - default value is 100
    /// </summary>
    int PageSize { set; get; }