Как обнаружить утечку памяти / разрядку аккумулятора в приложении для iPhone - PullRequest
0 голосов
/ 12 февраля 2009

Боюсь, что я внес утечку памяти или что-то в версию 1.2 моего приложения для iPhone. Когда я использую версию 1.2, я замечаю, что моя батарея разряжается намного быстрее, чем в версии 1.1. Для сравнения: в версии 1.1 батарея работала бы целый день, а вечером по-прежнему было много сока, но в версии 1.2 я обнаружила, что должна подключить ее в середине дня.

Может ли утечка памяти (или большая их часть) вызвать увеличение разряда батареи, или у меня что-то еще происходит?

Единственная интересная вещь, которую использует мое приложение, это класс AVAudioPlayer для воспроизведения некоторых аудиофайлов caf. Кроме этого это просто пара представлений с табличным представлением.

Я вызываю AudioSessionSetAcvie (false) в моем методе applicationWillTerminate, поэтому я не думаю, что причиной этого является аудиосеанс. Мне не нужно, чтобы мое приложение было активным, чтобы аккумулятор разрядился. Достаточно немного поработать, а затем выйти. Так что я почти уверен, что оставляю что-то позади, я просто не уверен, что.

Я пытался играть с инструментом Instruments, но похоже, что вы не можете использовать приложение, запущенное на устройстве (по какой-то причине мое приложение перестало работать в симуляторе)

Есть идеи, как найти причину, по которой батарея разряжается?

Ответы [ 3 ]

3 голосов
/ 12 февраля 2009

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

Повышенное использование батареи обычно означает, что ваш код продолжает работать. Лучший способ решить эту проблему - запустить приложение под инструментами (возможно, с помощью Sampler) и оставить его в состоянии, в котором вы уверены, что он обычно разряжает батарею. Проверьте результаты Sampler, и если у вас запущен код, вы сможете увидеть трассировку стека для него.

Надеюсь, как только вы определите, какой код выполняется, станет понятно, как его остановить.

1 голос
/ 12 февраля 2009

Утечки памяти не приведут к увеличению использования батареи, как говорит Нилобъект.

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

0 голосов
/ 12 февраля 2009

(почему-то мое приложение перестало работать в симуляторе)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...