gpt4 book ai didi

xamarin.ios - 使用 profiller 工具在 monotouch 和 mvvmcross 中寻找内存泄漏

转载 作者:行者123 更新时间:2023-12-04 19:11:10 24 4
gpt4 key购买 nike

我一直在努力消除我们的单声道触摸中的内存泄漏,并在过去几天里学到了很多东西,例如在垃圾收集成功之前,几乎总是需要解除一些事件:)

但是现在我一直在玩 profiller 工具,我可以看到大部分内存被字符串使用(或者看起来),请参阅以下屏幕转储:
enter image description here

enter image description here

但是正如您所看到的,单声道也使用了一些内存。我一直在研究我们的 View 模型和 View ,其中大部分都是正确的垃圾收集。如果我查看字符串,它们有时会被引用,我不知道如何处理这些信息。
如果我可以减少字符串使用的内存量,你们有什么建议吗:) 我试图找到任何教程或类似的东西,可能会揭示这些数字的含义,但没有运气。任何帮助表示赞赏。

最佳答案

一些个人经验的回答:

  • 对于教程,我只真正了解 http://docs.xamarin.com/ios/Guides/Deployment%252c_Testing%252c_and_Metrics/Monotouch_Profiler
  • 我发现“反向引用”选项是最有用的功能之一——重要的不是你有很多字符串,而是拥有这些字符串的人。
  • 我发现寻找这些错误的最好方法是在一个简单的测试工具和/或测试序列中重现它们 - 随着应用程序变得越来越大,我使用越来越多的组件 - MvvmCross、JSON.Net、SQLite-net 等 - 更多和更多的异步方式,然后我发现我需要减少这些组件的数量来识别泄漏。
  • 一旦你有了一个简单的测试工具,HeapShot 中的过滤器选项就会有所帮助——因为它让你专注于已知命名空间中的类。
  • 一旦你有了一个简单的测试工具,那么比较两个 HeapShot 也会有所帮助——你的测试 UI 中的哪些操作会导致 HeapShot 之间的增加?

    差异很重要 - 一些库故意在内存中缓存东西 - 例如HeapShot 图像中的某些 PropertyInfo 可能会被其中一个库故意缓存,以提高反序列化速度。


  • 为了更容易交叉引用,添加链接问题的链接:
  • Garbage collecting issue with Custom viewbinding in mono touch and mvvmcross
  • when to release objects in mono touch / mvvmcross
  • MVVMCross - SqlBits Memory Leak
  • Helping the GC in mono droid using mvvmCross
  • 关于xamarin.ios - 使用 profiller 工具在 monotouch 和 mvvmcross 中寻找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14812636/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com