OutOfMemoryException в IObjectList.EnsureRelatedObjects - PullRequest
0 голосов
/ 12 июня 2018

У меня есть эта строка кода:

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

Использование памяти процесса на данный момент составляет ~ 3 Гбайт, а allHandlers содержит ~ 16000 объектов.Holders класс не очень большой, но должно быть загружено около 50000 объектов.

Возможно, я фактически исчерпал системную память, но я просто хотел бы знать, есть ли какие-либо ограничения в этих частях MDrivenсамо по себе, что может вызвать это исключение.

1 Ответ

0 голосов
/ 13 июня 2018

Не должно быть жестких внутренних ограничений.Если вы используете 64-разрядную версию и явно не установили x86, тогда должны применяться только физические ограничения.

Если нам нужны большие блоки - и это может иметь место при транспортировке - мы можем столкнуться с исключениями нехватки памяти, посколькунет места для такого большого блока - даже если в небольших блоках много фрагментированной свободной памяти.

Если это то, что вы видите, вы можете разделить данные на две или более частей.Вы также можете настроить параметры внутреннего распределения для больших выборок: посмотрите на это свойство в IPersistenceService

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