Этот вопрос был очищен, и важная информация переместилась в ответ ниже.
У меня есть некоторые вопросы об управлении памятью.
Я создаю приложение для редактирования фотографий. Поэтому важно поддерживать низкий уровень использования памяти. Также я не буду публиковать код, потому что у меня нет большой утечки памяти при выполнении одной конкретной вещи. Я просто теряю пару килобайт/МБ со всем, что происходит. И переходить десятки тысяч строк кода, чтобы найти килобайты, не забавно;)
мое приложение использует основные данные, множество материалов cifilter, местоположение и основы.
Мое первое представление - это просто табличное представление, которое стоит мне около 5 МБ памяти. Затем вы делаете несколько фотографий, применяете некоторые фильтры, это сохраняется в основных данных, а затем вы возвращаетесь к этому первому виду.
Можно ли действительно избавиться от всего в памяти, кроме данных, необходимых для вождения этого первого вида. (это очень экономичное и удивительное 5mb)
Или всегда будет что-то позади, даже если вы установите все на нуль?
Бонусный вопрос:
есть ли разница в размере файла /cpu между UIImageJPEGRepresentation
и UIImagePNGRepresentation
?
Я знаю, что вы можете установить качество сжатия с помощью метода JPEG (сложнее на CPU/gpu?).
Просто пытайтесь уменьшить давление памяти всеми возможными способами.
Update:
Мне было указано, что вопрос может быть слишком расплывчатым.
Проблемы, которые у меня возникали в какой-то момент, были следующими:
- В некоторых случаях использование пиковой памяти слишком велико.
- Переход на второй диспетчер представлений и обратно вызывает утечку
- Редактирование изображения приводит к утечке памяти.
- Применение фильтра к более чем 4-5 изображениям приводит к сбою из-за низкой памяти, в этот момент утечек памяти больше не было. (проверено в инструментах)
P.s все это было протестировано на iPhone 4, а не на симуляторе.
Здесь был мем, чтобы немного облегчить настроение на этом сайте.