如何检查Xamarin.Android中的内存泄漏?
有没有人可以分享使用Xamarin Studio在Xamarin.Android平台上检查内存的建议或方法?
我尝试过Xamarin Studio中提供的以下选项,
工具>仪器>分配
但是,我可以在选项中仅选择iOS设备,如下图所示,
这有什么解决方案吗?
可悲的是,你不能以任何可靠的方式从Xamarin工作室做到这一点。 您可以尝试使用Profiler,但它需要Enterprise许可证。 我的建议是使用标准的Android工具。
制备:
1)下载“Eclipse Memory Analyzer”
2)找到Android设备监视器。 与Android SDK捆绑在一起,可在“Android-SKD / tools / monitor”中找到。 您可以通过打开Xamarin,按CMD +并选择SDK位置来查找该文件夹的位置。
3)查找堆快照转换器(从Android到Java)。 与Android SDK捆绑在一起,可在“Android-SDK / platform-tools / hprof-conv”中找到
捕获:
1)在设备上安装带调试模式的应用程序
2)将设备连接到PC并启动监视器(准备2步)
3)启动应用程序并通过设备中的应用程序ID找到它。
4)按Update Heap(bug图标右侧的图标)
5)做你认为会泄漏的东西
6)按Save Heap(开始右侧的图标)并将其保存到驱动器
检索结果:
1)将android堆转换为Java堆
1.1)启动终端
1.2)找到堆Shanpshot转换器(hprof-conv)(准备3步)
1.3)将hprof-conv丢弃到终端
1.4)删除Android堆,然后将其删除并重命名。 它将在具有所选名称的相同位置创建正确的副本
android-sdk-macosx/platform-tools/hprof-conv raw.hprof converted.hprof
2)打开Eclipse Memory Analyzer(准备中的1个步骤)
3)导入获得的头部转储
3)选择泄漏嫌疑人报告
4)查看结果
您可以尝试Xamarin Profiler https://www.xamarin.com/profiler在内存快照中,您将看到是否存在内存泄漏。 但根据我的经验,如果您的内存不足,可能会导致您在Android项目中使用大尺寸图像。