我有这行代码:
IObjectList allHolders = allHandlers.EnsureRelatedObjects("Holders");
此时的进程内存使用量约为 3 GB,allHandlers
包含约 16000 个对象。Holders
类不是很大,但应该加载大约 50000 个对象。
我实际上可能耗尽了系统内存,但我只想知道 MDriven 本身的这些部分是否有任何限制,这可能会引发此异常。
我有这行代码:
IObjectList allHolders = allHandlers.EnsureRelatedObjects("Holders");
此时的进程内存使用量约为 3 GB,allHandlers
包含约 16000 个对象。Holders
类不是很大,但应该加载大约 50000 个对象。
我实际上可能耗尽了系统内存,但我只想知道 MDriven 本身的这些部分是否有任何限制,这可能会引发此异常。
不应有严格的内部限制。如果您使用的是 64 位且未明确设置 x86,则仅应应用物理限制。
如果我们需要大块——在传输过程中可能就是这种情况——我们可能会遇到内存不足异常,因为没有空间容纳这么大的块——即使在较小的块中有大量碎片化的空闲内存。
如果这是您所看到的,您可能希望将数据分成 2 块或更多块。您还可以调整设置,以了解我们如何在内部为更大的提取进行分块:查看 IPersistenceService 中的此属性
/// <summary>
/// EnsureRange will use this pagesize when chunking up fetches - default value is 100
/// </summary>
int PageSize { set; get; }