Есть ли эквивалент-applicationDidReceiveMemoryWarning: на Mac

(*this)[bar];

хорошо работает для меня.

6
задан Harry Jordan 3 October 2009 в 16:01
поделиться

4 ответа

Память в Mac OS X работает не так, как OS X Touch. Примечательно, что у настольного компьютера намного больше оперативной памяти, и он будет переключать память на диск, когда приложения требуют большего. Кроме того, существует множество приложений, конкурирующих за ресурсы.

Настоящий вопрос , чего вы пытаетесь достичь?

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

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

8
ответ дан 10 December 2019 в 00:41
поделиться

Я думаю, вы можете разумно ожидать, что у большинства современных компьютеров Mac будет как минимум 1 ГБ ОЗУ (возможно, 2, а может быть, даже 4+). Если ваше приложение вызывает ошибки malloc и / или не хватает памяти, значит, вы поступили неправильно и вам нужно переосмыслить то, что вы храните в памяти.

Итак, в двух словах, нет. Mac не так ограничен памятью, как iPhone, поэтому в нем нет необходимости.

0
ответ дан 10 December 2019 в 00:41
поделиться

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

На практике большинство приложений не беспокоит. В ситуациях, когда вы действительно начинаете не выделять объекты (виртуальная память исчерпана, загрузочный диск полностью заполнен и т. Д.), Вы, скорее всего, все равно столкнетесь с ошибкой.

0
ответ дан 10 December 2019 в 00:41
поделиться

Пусть ядро ​​позаботится об управлении памятью.

iPhone не использует виртуальную память, поэтому его ограничения памяти очень конкретны. Единственная возможность ядра - предупредить вас, прежде чем оно в конечном итоге вас отключит. Вот почему в iPhone есть предупреждения о памяти.

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

2
ответ дан 10 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

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