【发布时间】:2017-07-12 06:36:51
【问题描述】:
任何人都可以分享使用 Xamarin Studio 在 Xamarin.Android 平台中检查内存的建议或方法吗?
我已尝试使用 Xamarin Studio 中提供的以下选项,
工具 > 工具 > 分配
但是,我只能在选项中选择 iOS 设备,如下图所示,
有什么解决办法吗?
【问题讨论】:
标签: c# xamarin memory-leaks xamarin.android xamarin-studio
任何人都可以分享使用 Xamarin Studio 在 Xamarin.Android 平台中检查内存的建议或方法吗?
我已尝试使用 Xamarin Studio 中提供的以下选项,
工具 > 工具 > 分配
但是,我只能在选项中选择 iOS 设备,如下图所示,
有什么解决办法吗?
【问题讨论】:
标签: c# xamarin memory-leaks xamarin.android xamarin-studio
很遗憾,您无法从 Xamarin Studio 以任何可靠的方式执行此操作。您可以尝试分析器,但它需要企业许可证。我的建议是使用标准的 Android 工具。
准备工作:
1) 下载"Eclipse Memory Analyzer"
2) 找到 Android 设备监视器。与 Android SDK 捆绑在一起,可以在“Android-SKD/tools/monitor”中找到。您可以通过打开 Xamarin、按 CMD + 并选择 SDK Locations 来找到该文件夹的位置。
3) 查找堆快照转换器(从 Android 到 Java)。与 Android SDK 捆绑在一起,可以在“Android-SDK/platform-tools/hprof-conv”中找到
捕捉:
1) 在设备上以调试模式安装应用程序
2) 将设备连接到 PC 并启动监视器(准备时的 2 步)
3) 启动应用程序并在设备中通过应用程序 ID 找到它。
4) 按更新堆(bug 图标右侧的图标)
5) 做你认为会泄露的事情
6) 按保存堆(开始右侧的图标)并将其保存到驱动器
检索结果:
1) 将 android Heap 转换为 Java Heap
1.1) 启动终端
1.2) 找到 Heap 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) 导入获取的 Head Dump
3) 选择泄漏嫌疑人报告
4) 查看结果
【讨论】:
你可以试试 Xamarin Profiler https://www.xamarin.com/profiler 在内存快照中,您将看到是否存在内存泄漏。但是根据我的经验,如果您出现内存不足异常,可能是由于您在 Android 项目中使用了大尺寸图像。
【讨论】: