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

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

谁能分享使用 Xamarin Studio 检查 Xamarin.Android 平台内存的建议或方法?

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

工具 > 工具 > 分配

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

enter image description here

有什么解决办法吗?

最佳答案

遗憾的是,您无法通过 Xamarin Studio 以任何可靠的方式完成此操作。您可以尝试探查器,但它需要企业许可证。我的建议是使用标准的 Android 工具。

准备:

1) 下载"Eclipse Memory Analyzer"

2) 找到 Android 设备监视器。与 Android SDK 捆绑在一起,可以在“Android-SKD/tools/monitor”中找到。您可以通过打开 Xamarin、按 CMD + 并选择 SDK Locations 来找到该文件夹​​的位置。

enter image description here enter image description here

3) 查找堆快照转换器(从 Android 到 Java)。与 Android SDK 捆绑在一起,可以在“Android-SDK/platform-tools/hprof-conv”找到

enter image description here

捕获:

1) 在设备上以 Debug模式安装应用

2) 将设备连接到 PC 并启动监视器(准备阶段的第 2 步)

3) 启动应用程序并通过设备中的应用程序 ID 找到它。

enter image description here

4) 按更新堆(错误图标右侧的图标)

5)做你认为会泄露的事情

6) 按 Save Heap(开始右侧的图标)并将其保存到驱动器

检索结果:

1) 将android堆转换为Java堆

1.1)启动终端

1.2) 定位 Heap Shanpshot 转换器 (hprof-conv)(准备阶段的 3 步)

1.3) 将 hprof-conv 放到终端

1.4) drop Android heap,然后,drop it next and rename it。它将使用所选名称在同一位置创建正确的副本

android-sdk-macosx/platform-tools/hprof-conv raw.hprof converted.hprof

enter image description here

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

3) 导入获取的Head Dump

enter image description here

3) 选择泄漏嫌疑人报告

enter image description here

4) 查看结果

enter image description here

关于c# - 如何检查 Xamarin.Android 中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45050156/

相关文章:

c# - 如何创建 mysql 更新查询以在 c#.net windows 应用程序的一条语句中更新多行

c# - 事件委托(delegate)(in)平等?

c# - Unity ARKit SetWorldOrigin - 错误的旋转

xamarin - 将委托(delegate)对象正确分配给 iOS Mobile Blazor 绑定(bind)的 UNUserNotificationCenter 对象

android - MvvmCross Android fragment 添加到后台堆栈

c++ - 这会导致 C++ 中的内存泄漏吗?

递归中的 C++ 内存泄漏

c# - 如何实现离线读写锁

xamarin - .Net MAUI 中的 CarouselView : CurrentItem and Position do not work

iphone - UITableView reloadData 多次导致内存泄漏并减慢应用程序