Инструменты, часть Xcode, в основном предназначены для приложений iOS, MacOS, WatchOS и TVOS. Несмотря на то, что он невероятно эффективен для обнаружения утечек памяти на этих платформах, используя такие инструменты, как утечка инструмента и отладчика графа памяти, его прямое применение к приложениям MVVMcross ограничено. MVVMcross-это кроссплатформенная структура, которая позволяет разработать несколько платформ, включая Android и iOS.
Однако, если вы разрабатываете приложение MVVMcross для iOS, вы можете использовать инструменты для отслеживания утечек памяти в режиме реального времени для части iOS вашего приложения. Вот как:
Использование инструментов для приложений iOS MVVMcross
1. Приборы запуска: запустите с открытия своего проекта в XCode и выберите продукт> профиль. Это запустит инструменты.
2. Выберите шаблон утечек: в диалоговом окне «Выбор шаблона» выберите шаблон утечек в разделе памяти. Этот шаблон специально разработан для обнаружения утечек памяти.
3. Запустите приложение: нажмите кнопку «Запись», чтобы начать профилирование вашего приложения. Взаимодействуйте с вашим приложением, как обычно, особенно сосредоточиться на областях, где вы подозреваете, что утечки памяти могут возникнуть.
4. Проанализируйте результаты: после того, как вы завершили взаимодействие, остановите запись. Инструменты будут отображать график, показывающий использование памяти с течением времени. Если есть утечки памяти, вы увидите увеличение использования памяти без соответствующего уменьшения, когда объекты должны быть сделка. Под графиком вы найдете список просочившихся блоков памяти, а также следы стека, указывающие, где были выделены утечки.
5. Определите и исправляют утечки: используйте следы стека, чтобы найти источник утечек в вашем коде. Общие проблемы включают в себя циклы удержания, где объекты содержат сильные ссылки друг на друга, предотвращающие сделки. Исправление их включает в себя нарушение циклов удержания, часто с использованием слабых или неудобных ссылок.
ограничения для платформ, не являющихся OIS
Для приложений MVVMcross нацеливание на платформы, отличные от iOS (например, Android), инструменты не могут быть использованы напрямую. Вместо этого вам нужно будет использовать инструменты для определения утечки с утечки с конкретными платформами:
- Android: используйте такие инструменты, как Android Studio Profiler или сторонние библиотеки, такие как Leakcanary.
- Другие платформы: используйте инструменты или библиотеки профилирования памяти, специфичные для конкретной платформы.
Таким образом, в то время как инструменты очень эффективны для обнаружения утечек памяти в приложениях iOS, в том числе тех, которые построены с MVVMcross для iOS, это не применимо к платформам, не связанным с OIS. Для кроссплатформенной разработки вы должны использовать инструменты, специфичные для каждой целевой платформы.
Цитаты:[1] https://www.netguru.com/blog/what-are-ios-memory-leaks-and-how-te-detect-tem
[2] https://www.reddit.com/r/rust/comments/kpsgin/how_to_find_a_memory_leak_in_a_rust_program/
[3] https://stackoverflow.com/questions/38592689/memory-check-in-real-time-pplication
[4] https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/9-no-cinding-memory-leaks-using-instruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-because-of-not-disposed-viewmodels
[6] https://forums.ni.com/t5/labview/get-object-memory-leak/td-p/4276905
[7] https://forums.developer.apple.com/forums/thread/770061
[8] https://github.com/mvvmcross/mvvmcross/issues/2884