首页 > 解决方案 > IObjectList.EnsureRelatedObjects 中的 OutOfMemoryException

问题描述

我有这行代码:

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

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

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

标签: exceptionout-of-memorymdriven

解决方案


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

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

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

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

推荐阅读