【问题标题】:How to check memory leak in Xamarin.Android?如何检查 Xamarin.Android 中的内存泄漏?
【发布时间】:2017-07-12 06:36:51
【问题描述】:

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

我已尝试使用 Xamarin Studio 中提供的以下选项,

工具 > 工具 > 分配

但是,我只能在选项中选择 iOS 设备,如下图所示,

有什么解决办法吗?

【问题讨论】:

    标签: c# xamarin memory-leaks xamarin.android xamarin-studio


    【解决方案1】:

    很遗憾,您无法从 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) 查看结果

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • Xamarin Profiler 需要 Enterprice 许可证
      • 它也只对 Mono 方面有帮助,它并不能真正告诉你很多东西。
      猜你喜欢
      • 2011-05-21
      • 1970-01-01
      • 2022-01-23
      • 2012-01-02
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 2016-08-08
      • 2010-10-09
      相关资源
      最近更新 更多