Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 可以将仪器用于实时跟踪内存泄漏以进行MVVMCROSS应用程序


可以将仪器用于实时跟踪内存泄漏以进行MVVMCROSS应用程序


XCode的一部分的仪器主要是为iOS,MACOS,WatchOS和TVOS应用程序设计的。尽管使用泄漏仪器和内存图调试器等工具在这些平台中检测内存泄漏非常有效,但其直接应用于MVVMCross应用程序是有限的。 MVVMCROSS是一个跨平台框架,允许为包括Android和iOS在内的多个平台开发。

但是,如果您正在为iOS开发MVVMCross应用程序,则可以使用仪器实时跟踪内存泄漏,以适用于应用程序的iOS部分。这是如何:

##使用iOS MVVMCROSS应用程序的仪器

1。启动仪器:首先以Xcode打开您的项目,然后选择产品>配置文件。这将启动仪器。

2。选择泄漏模板:在“模板选择”对话框中,选择“内存”部分下的泄漏模板。该模板专门设计用于检测内存泄漏。

3.运行您的应用程序:单击记录按钮开始分析您的应用程序。像往常一样与应用程序进行交互,尤其是专注于怀疑内存泄漏的区域。

4。分析结果:完成互动后,停止录制。仪器将显示一个图表,显示随着时间的推移记忆使用情况。如果有内存泄漏,您将看到内存的使用增加而不相应减少对象时的相应减小。在图表下方,您将找到泄漏的内存块列表以及堆栈跟踪,指示分配泄漏的位置。

5。识别和修复泄漏:使用堆栈痕迹定位代码中的泄漏源。常见问题包括保留周期,其中对象彼此之间具有强烈的参考,从而阻止了交易。解决这些问题涉及打破固定周期,通常是通过使用弱或未拥有的参考文献。

##非OIS平台的限制

对于针对iOS(例如Android)以外的其他针对平台的MVVMCross应用程序,无法直接使用仪器。相反,您需要使用特定于平台的工具进行内存泄漏检测:

- Android:使用诸如Android Studio的内存剖面或第三方库之类的工具,例如Leakcanary。
- 其他平台:利用平台特定的内存分析工具或库。

总而言之,虽然仪器非常有效地检测iOS应用程序中的内存泄漏,包括使用MVVMCross构建的iOS应用程序泄漏,但它不适用于非OIS平台。对于跨平台开发,您必须使用针对每个目标平台的工具。

引用:
[1] https://www.netguru.com/blog/what-are-are-ios-memory-leaks-and-and-how-to-detect-them
[2] https://www.reddit.com/r/rust/comments/kpsgin/how_to_find_a_memory_memory_leak_in_a_rust_program/
[3] https://stackoverflow.com/questions/38592689/memory-leak-check-check-ine-real-time-application
[4] https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/9-finding-memory-leaks-using-istruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-baike-baike-baike-not-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