Базовое управление памятью данных

Они не преобразовывают непосредственно, но это допускает совместимость между.NET и J2EE.

http://www.mainsoft.com/products/index.aspx

9
задан Michael Waterfall 14 November 2009 в 15:27
поделиться

2 ответа

Core Data управляет временем жизни объекта так же, как остальная часть Какао управляет временем жизни объекта: экземпляры NSManagedObject в контексте управляемого объекта сохраняются в памяти до тех пор, пока контекст управляемого объекта или любой другой объект сохраняет право собственности на них (через - [NSObject keep] . По умолчанию NSManagedObjectContext не сохраняет экземпляры, поэтому они освобождаются, как только любые другие владельцы (то есть ваши экземпляры NSFetchedResultsController или другие экземпляры в вашей программе) освобождают их. Вы можете изменить это поведение по умолчанию для контекста управляемого объекта, чтобы сохранить экземпляры, но вы редко хотите. Контекст управляемого объекта имеет для хранения экземпляров, которые обновляются до следующего сохранения. Невозможно сохранить эти изменения, кроме как в экземпляре объекта, до тех пор, пока не будет сохранен контекст. Итак, чтобы свести к минимуму использование памяти объектами Core Data, следуйте стандартным правилам: освободите их как можно скорее. Если вы обнаружите, что использование контекстной памяти растет (используйте инструменты Core Data Instruments для отслеживания этого), сохраняйте контекст чаще, если вы обновляете экземпляры и, следовательно, сохраняете их в контексте до следующего сохранения, даже если вы в противном случае выпустил их.

Использование NSFetchedResultsController упрощает все это. По факту, Причина, по которой NSFetchedResultsController вообще существует, состоит в том, чтобы упростить для программиста пакетную выборку в среде с низким объемом памяти (например, iPhone).

Как упоминал Луис, NSPersistentStoreCoordinator поддерживает строку cache для кэширования данных экземпляра в памяти вместо необходимости возвращаться на диск, когда объект попадает в контекст управляемого объекта. Однако это деталь реализации Core Data (хотя промахи в кеше снижают производительность; вы можете отслеживать промахи кеша в инструментах). Core Data управляет кэш-памятью, и вам не о чем беспокоиться.

NSPersistentStoreCoordinator поддерживает кэш строк для кэширования данных экземпляра в памяти вместо необходимости возвращаться на диск, когда объект попадает в контекст управляемого объекта. Однако это деталь реализации Core Data (хотя промахи в кеше снижают производительность; вы можете отслеживать промахи кеша в инструментах). Core Data управляет кэш-памятью, и вам не о чем беспокоиться.

NSPersistentStoreCoordinator поддерживает кэш строк для кэширования данных экземпляра в памяти вместо необходимости возвращаться на диск, когда объект попадает в контекст управляемого объекта. Однако это деталь реализации Core Data (хотя промахи в кеше снижают производительность; вы можете отслеживать промахи кеша в инструментах). Core Data управляет кэш-памятью, и вам не о чем беспокоиться.

12
ответ дан 4 December 2019 в 13:03
поделиться

Да, CoreData вернет вещи, которые вы не используете. В нем есть кеши и многое другое, поэтому данные могут быть выпущены не сразу, но в целом он очень хорош с точки зрения управления памятью и минимизации занимаемой площади.

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

4
ответ дан 4 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: