Инструменты Xcode, использующие много памяти.


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

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

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

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

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

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

Спасибо.

1 4

1 ответ:

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

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

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

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

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

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

Обновить

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

Вы можете выполнить эти тесты по отдельности, если вы должен.

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

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

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

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

Утечки

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

Зомби

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

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

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

Примечания

  • самые передовые инструменты разработчика-релизы могут быть очень зыбкой. Если у вас возникли проблемы, то лучше придерживаться официальных релизов.
  • я могу запустить модульный тест osx (в первую очередь C/C++ API) только с выделениями, он потребляет около 1 МБ / с при записи. что-то кажется неправильным, но, возможно, это указывает на проблему в вашей программе (много временных распределений?).
  • изменение способа отображения данных и/или настроек заряда/фокусировки может потребовать много памяти. например, "восстановить все" может потребовать несколько ГБ для обработки большого образца.
  • Если 100 Мбит/с-точное число, я бы написал ошибку. Я знаю, что Instruments потребляет много памяти, но это очень много для записи бездействующего приложения, даже с ожиданием, что instruments потребляет много памяти. из памяти.

Удачи