如何检查Xamarin.Android中的内存泄漏?

Swa*_*pal 6 c# memory-leaks xamarin.android xamarin xamarin-studio

有人可以分享使用Xamarin Studio在Xamarin.Android平台上检查内存的建议或方法吗?

我尝试过Xamarin Studio中提供的以下选项,

工具>仪器>分配

但是,我可以在选项中仅选择iOS设备,如下图所示,

在此输入图像描述

这有什么解决方案吗?

Tai*_*ier 7

可悲的是,但你无法以任何可靠的方式从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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

2)打开Eclipse Memory Analyzer(准备中的1个步骤)

3)导入获得的头部转储

在此输入图像描述

3)选择泄漏嫌疑人报告

在此输入图像描述

4)查看结果

在此输入图像描述


小智 0

您可以尝试Xamarin Profiler https://www.xamarin.com/profiler 在内存快照中,您将看到是否存在内存泄漏。但根据我的经验,如果出现内存不足异常,可能是由于您在 Android 项目中使用了大尺寸图像造成的。