Высокое использование памяти в iKImageBrowserView (или создание эскиза качества памяти?) - PullRequest
3 голосов
/ 28 декабря 2011

В моем Mac-приложении, которое я сейчас разрабатываю, у меня есть iKImageBrowserView, который отображает что-то вроде 500/1000 изображений.

Отключение отображения изображения, потребление памяти очень низкое - около 50 МБ.
Включение отображения изображений, потребление памяти очень высоко, около 500 МБ.
Каждый раз, когда я прокручиваю вверх / вниз, использование памяти увеличивается.

Вот фрагмент кода imageBrowser:itemAtIndex:

    ..
    MyBrowserNSImageItem *item = [[MyBrowserNSImageItem alloc] initWithCover:coverImage andId:myFile];
    return [item autorelease];

где coverImage читается из кэша объектов и не каждый раз инициализируется.

Как я могу уменьшить использование памяти?

Обновление : Я пытался использовать imageVersion: из DataSourceProtocol, но все еще интенсивно используется память. Если я инициализирую изображения, но не передаю их в память ikImageBrowserView, недостаточно памяти.

Другое обновление : Я сделал еще один тест. Каждый раз я выделяю объект простым PNG-изображением. И на этот раз памяти мало. Проблема возникает только тогда, когда я использую реальные изображения. Они JPG около 50/100 КБ. Вероятно, когда они загружены в память, они распаковываются. Как я могу уменьшить использование памяти NSImage?

Обновление : Проблема в качестве JPEG. Они потребляют слишком много памяти при отображении. Итак, вопрос: КАК сгенерировать миниатюру памяти / качества в Какао?

1 Ответ

2 голосов
/ 31 декабря 2011

С целью поделиться своим опытом для будущих читателей я нашел свою проблему.Это была утечка памяти в моем коде.Утечка была очень тривиальной в моем пользовательском ImageBrowserItem.

В качестве другой оптимизации я переключился с NSImage на представление NSData (оно потребляет меньше памяти).

В качестве последней оптимизации (которую я собираюсь подумать) о качестве миниатюр.Я думаю, чтобы показать другое качество большого пальца в зависимости от значения масштабирования.Что ты думаешь?

...