如何检查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项目中使用大尺寸图像。