Инструменты XCode, использующие много памяти. - PullRequest
6 голосов
/ 30 августа 2011

Хорошо, так что это моя проблема, и я прошу прощения, если это дубликат.Я искал, но не мог найти ничего, что я посчитал уместным.

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

Это заставило меня запустить монитор активности при использовании инструментов иОбратите внимание, что каждый второй инструмент открыт, он занимает все больше и больше реальной памяти.Примерно 100 МБ сек.

Это не займет много времени, чтобы потреблять всю мою свободную память iMacs (2 ГБ), а затем начинает отставать.

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

Есть ли что-то очевидное, что я делаю неправильно?Любая помощь будет оценена.

Спасибо.

1 Ответ

5 голосов
/ 30 августа 2011

инструменты занимают много памяти.

в зависимости от того, что вы записываете, вы можете уменьшить использование памяти.например, вы часто можете указать, что (или что нет) записывать, или снизить частоту дискретизации (если применимо).

100 МБ / с необычно высоки.Можете ли вы дать более точное описание того, что вы записываете в то время?(инструменты, которые вы используете, что делает процесс записи и т. д.).

Xcode 3 использовал намного меньше памяти - не уверен, что это также относится и к инструментам.

Вы можете уменьшитьиспользование памяти в некоторой степени при запуске набора инструментов в виде 32-разрядных процессов.

наконец, физическая память 2 ГБ - ничто для Xcode + Instruments + iOS Sim.Кстати, я регулярно исчерпываю физическую память с 8 или более ГБ.бу.к счастью, память дешева, когда вам нужно 4 или 8 ГБ.

Обновление

Я пытался использовать инструменты для распределения, утечки и зомби

Вы можете запускать эти тесты по отдельности, если необходимо.

Распределения

Само по себе выделение не должно занимать тонну памяти, если ваше приложение не создаетмного выделений.

Чтобы уменьшить память с помощью этого инструмента, вы можете отключить некоторые опции, которые вам не интересны:

  • не записывать каждую операцию подсчета ссылок
  • только отслеживать активные ресурсы
  • отключить обнаружение зомби
  • не идентифицировать объекты c ++

Утечки

  • инструмент Распределения подразумевает только если вы хотите историю утечек .

Само обнаружение утечек может потреблять много памяти, потому что оно сканирует память, в основном клонируя ваши выделения.скажем, у вас выделено 100 МБ - утечки будут периодически приостанавливать процесс, клонировать память и сканировать ее на наличие паттернов.это может занять больше памяти, чем ваше приложение.iirc, он выполняется как подпроцесс в инструментах.

Zombies

  • подразумевает инструмент распределения.

Обнаружение зомби обычно подразумевает refсчитать запись.При отладке зомби наиболее эффективно никогда не освобождать их.Если вы их освободите, вы можете обнаружить только временных зомби (не уверен, есть ли такая опция в инструментах ...).Никогда не освобождая распределение объектов, очевидно, будет занимать больше памяти.Выполнение утечек в процессе будет тогда занимать больше памяти, потому что ваши размеры кучи будут больше - утечки и зомби не должны объединяться.

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

Примечания

  • Передовые выпуски Developer Tools могут быть очень шаткими.Если у вас возникли проблемы, это помогает придерживаться официальных версий.
  • Я могу запустить модульный тест osx (в первую очередь c / c ++ apis) только с выделением ресурсов, он потребляет около 1 МБ / с при записи.что-то кажется неправильным, но, возможно, это указывает на проблему в вашей программе (много временных переходов?).
  • , изменяющих способ отображения данных и / или настройки заряда / фокуса могут потребовать много памяти.например, «Восстановить все» может потребоваться несколько ГБ для обработки большой выборки.
  • , если 100 МБ / с - точное число, я бы сообщил об ошибке.Я знаю, что инструменты занимают много памяти, но это очень много для записи простаивающего приложения, даже с учетом того, что инструменты потребляют много памяти.

удачи

...