Какой порог использования памяти, когда я получаю предупреждение о памяти в iOS

Я получил эти предупреждения в своем приложении для iOS

Received memory warning. Level=1
Received memory warning. Level=2

Проблема в том, что после предупреждения уровня 2 мое приложение будет убито ... Сколько МБ памяти может использовать мое приложение, пока я не получу такие предупреждения? Я получаю ‹30 МБ« живых байтов »в XCode Instruments, прежде чем мое приложение будет убито из-за предупреждения о памяти уровня 2. Это мои ошибки чтения, или я не собираюсь использовать в моем приложении более 30 МБ памяти?

Я тестирую iPod Touch 4-го поколения и iPhone 4 и ориентируюсь как минимум на эти устройства.

Любые советы приветствуются, и заранее спасибо!


person Zennichimaro    schedule 16.10.2012    source источник
comment
Скайлер Салех предоставляет достоверную информацию о допустимом использовании ОЗУ для приложения iOS здесь: stackoverflow.com/questions/6044147/   -  person Zennichimaro    schedule 18.10.2012
comment
TODO: попробуйте другой инструментарий, использовал инструментарий распределения памяти, но коллега работает нормально с 100+ Мб на его инструментарии xcode. Я уверен, что наше приложение использует более 30 МБ в любой момент при запуске   -  person Zennichimaro    schedule 18.10.2012


Ответы (2)


Прежде всего, я спрашиваю себя, что вы загружаете в память, которая занимает так много места. Во-вторых, если вы все выпускаете правильно. ARC упрощает нашу жизнь, но не является сборщиком мусора, там может быть заброшенная память и другие проблемы, которые вызывают рост памяти. В iphone 3gs предел памяти составляет около 25 МБ, когда вы достигнете его, вы получите предупреждение о памяти, если ваше приложение не сможет очистить некоторую память после этого, оно закроется.

person Andrea    schedule 16.10.2012
comment
Прежде всего, я спрашиваю себя, что вы загружаете в память, которая занимает так много места. - Это действительно лучший совет, потому что вы не можете контролировать, сколько памяти вам доступно (ОС решает это в зависимости от доступности). Все, что вы можете сделать, это а) использовать как можно меньше памяти и б) соответствующим образом отреагировать на первое предупреждение о памяти. - person sosborn; 18.10.2012
comment
Я просто загружаю все текстуры, необходимые для рендеринга сцены. Одна несжатая текстура уже использует 4 МБ ОЗУ (1024x1024x32Bit). Он работал на 3GS и все еще работает на 3GS, так что я совершенно уверен, что потолок не 30 МБ. Попробую снова войти в профиль позже. Спасибо за вклад! - person Zennichimaro; 18.10.2012

Если вы хотите поддерживать старые устройства, такие как iPhone 3GS, я бы посоветовал не превышать 12-15 МБ.

person atxe    schedule 16.10.2012