Как исправить утечки памяти в iOS приложениях? - PullRequest
2 голосов
/ 10 февраля 2020

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

Memory debugger graph

enter image description here

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

Ответы [ 3 ]

0 голосов
/ 10 февраля 2020

На графике отладчика памяти вы должны определить, какие классы ссылаются друг на друга, например:

Entry Controller Home Controller Feed Controller Entry Controller Home Controller

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

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

Надеюсь, это поможет. Не стесняйтесь комментировать, если вам нужны дополнительные разъяснения.

0 голосов
/ 10 февраля 2020

Вам НЕ нужно использовать инструменты. Это старый способ. Используйте сам Xcode.

См. Визуальная отладка с помощью Xcode - 24: 45

Смотреть видео ОБЯЗАТЕЛЬНО, но сводка видео такова:

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

  • Утечки. XCode пометит это с фиолетовым значком. Возможны: делегаты, замыкания
  • Заброшенная память. XCode не будет комментировать это. Но это все еще увеличивает вашу память. Возможные примеры: повторяющийся таймер, который никогда не аннулируется, NotificationCenter, A, никогда не заканчивающийся DispatchWorkItem

Для утечек граф памяти имеет значение al oop ie двухстороннее.

Для Покинутая память графа НЕ двухсторонняя. Это просто объект, который Apple классифицирует как «root путь», ссылающийся на ваш объект и никогда не позволяющий ему go. Подробнее об этом см. здесь

0 голосов
/ 10 февраля 2020

Память на мобильных устройствах является общим ресурсом. Приложениям, которые управляют этим неправильно, не хватает памяти, все равно sh и страдают от резко сниженной производительности. чтобы исправить это, выполните следующие действия. Откройте Xcode и выполните сборку для профилирования. Инструменты запуска. Используйте приложение, пытаясь воспроизвести как можно больше сценариев ios и поведения. Следите за утечками / всплесками памяти. Выследите источник утечек памяти. Исправить проблему.

...