Xcode의 일부인 악기는 주로 iOS, MacOS, WatchOS 및 TVOS 응용 프로그램을 위해 설계되었습니다. Leaks Instrument 및 Memory Graph Debugger와 같은 도구를 사용하여 이러한 플랫폼에서 메모리 누출을 감지하는 데 엄청나게 효과적이지만 MVVMCross 응용 프로그램에 대한 직접 응용 프로그램은 제한적입니다. MVVMCross는 Android 및 iOS를 포함한 여러 플랫폼을 개발할 수있는 크로스 플랫폼 프레임 워크입니다.
그러나 iOS 용 MVVMCross 응용 프로그램을 개발하는 경우 악기를 사용하여 앱의 iOS 부분에 대해 메모리 누출을 실시간으로 추적 할 수 있습니다. 여기에서 :
iOS MVVMCross 응용 프로그램 용 도구 사용
1. 발사 기기 : Xcode에서 프로젝트를 열고 제품> 프로필을 선택하여 시작하십시오. 이것은 악기를 런칭 할 것입니다.
2. Leaks 템플릿 선택 : 템플릿 선택 대화 상자에서 메모리 섹션에서 누출 템플릿을 선택하십시오. 이 템플릿은 메모리 누출을 감지하도록 특별히 설계되었습니다.
3. 앱 실행 : 레코드 버튼을 클릭하여 앱 프로파일 링을 시작하십시오. 평소와 같이 앱과 상호 작용하십시오. 특히 메모리 누출이 발생할 수있는 영역에 중점을 둡니다.
4. 결과 분석 : 상호 작용을 완료 한 후 녹음을 중지하십시오. 계측기에는 시간이 지남에 따라 메모리 사용을 보여주는 그래프가 표시됩니다. 메모리 누출이 있으면 객체를 처리해야 할 때 해당 하락없이 메모리 사용량이 증가하는 것을 볼 수 있습니다. 그래프 아래에는 누출이 할당 된 위치를 나타내는 스택 트레이스와 함께 누출 된 메모리 블록 목록이 있습니다.
5. 누출 식별 및 수정 : 스택 트레이스를 사용하여 코드에서 누출 소스를 찾으십시오. 일반적인 문제로는 객체가 서로에 대한 강한 참조를 보유한주기를 유지하여 거래를 방지합니다. 이것들을 고정하려면 종종 약하거나 소유하지 않은 참조를 사용하여 고정주기를 깨뜨리는 것이 포함됩니다.
비오스 플랫폼의제한 사항
iOS (예 : Android) 이외의 플랫폼을 타겟팅하는 MVMCross 응용 프로그램의 경우 장비를 직접 사용할 수 없습니다. 대신 메모리 누출 감지에 플랫폼 별 도구를 사용해야합니다.
- Android : Android Studio의 메모리 프로필러 또는 Leakcanary와 같은 타사 라이브러리와 같은 도구를 사용하십시오.
- 기타 플랫폼 : 플랫폼 별 메모리 프로파일 링 도구 또는 라이브러리 사용.
요약하면, IOS 용 MVVMCross로 구축 된 IOS 응용 프로그램의 메모리 누출을 감지하는 데 효과적이지만 Nonios 플랫폼에는 적용 할 수 없습니다. 크로스 플랫폼 개발을 위해서는 각 대상 플랫폼에 특정한 도구를 사용해야합니다.
인용 :[1] https://www.netguru.com/blog/what-are-ios-memory-leaks-and-to-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-leak-check-in-real-application
[4] https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/9-Finding-Memory-Leaks-using-instruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-because-od-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