Как уменьшить использование памяти Core Data при каскадном удалении больших графов объектов? - PullRequest
4 голосов
/ 16 июля 2009

Я использую Core Data для хранения списков данных. Итак, есть родительские объекты с любым количеством дочерних объектов. Core Data отлично справляется с сохранением низкого уровня использования памяти, пока я вставляю объекты и читаю, но когда я выполняю операцию удаления, память резко увеличивается.

Когда я удаляю родительский объект с ~ 5000 потомками, при каскадном удалении используется ~ 10 МБ. Это масштабируется линейно, так что один с 10 000 использует 20 МБ. Насколько я могу судить, он считывает в память весь граф объектов перед тем, как выполнить удаление. Я предполагаю, что это для обеспечения целостности и достоверности данных, но мне действительно нужно, чтобы использовать меньше памяти.

Кто-нибудь знает, как заставить Core Data использовать меньше памяти при каскадном удалении? Или я должен сделать каскад вручную, чтобы уменьшить использование памяти?

1 Ответ

1 голос
/ 16 июля 2009

На данный момент вам придется вручную каскадировать, если вы хотите уменьшить высшую отметку. Две точки:

  1. Вам следует сообщить об ошибке в Apple , требуя большего контроля над ошибочным поведением при каскадном удалении.
  2. Подтвердили ли вы, что этот временный рост памяти действительно создает проблемы для вашего приложения? Конечно, стоит попытаться уменьшить использование памяти, но если вы сделаете это руководство по удалению, это может означать, что вы потеряете улучшения производительности в будущих обновлениях, если не измените свой код снова.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...