【问题标题】:Visual Studio Xamarin Forms Diagnostic ToolsVisual Studio Xamarin 表单诊断工具
【发布时间】:2023-01-11 11:51:09
【问题描述】:

如果 Memory Usage 中的对象 (diff) 减少了,是否意味着垃圾收集已经运行?

【问题讨论】:

    标签: c# visual-studio xamarin system.diagnostics diagnostic-tools


    【解决方案1】:

    从文档Analyze memory usage data,我们可以知道:

    列的名称取决于您在项目属性中选择的调试模式:.NET、本机或混合(.NET 和本机)。

    • Objects (Diff) 和 Allocations (Diff) 列显示快照时 .NET 和本机内存中的对象数
      采取。
    • Heap Size (Diff) 列显示 .NET 和本机堆中的字节数

    当您拍摄了多个快照时,汇总表的单元格包括行快照和前一个快照之间的值变化。

    要分析内存使用情况,请单击打开内存使用情况详细报告的链接之一:

    查看当前快照与当前快照之间差异的详细信息 上一个快照,选择箭头左侧的更改链接 (内存使用量增加)。 red arrow表示increase 内存使用情况,green arrow 表示 decrease。

    因此,绿色箭头表示内存使用量减少。

    通常,对于您的应用程序的大多数对象 创建,你可以依赖the garbage collector到automatically 执行必要的内存管理任务。然而,无人管理 资源需要显式清理。最常见的非托管类型 resource 是包装操作系统资源的对象,例如 文件句柄、窗口句柄或网络连接。虽然 垃圾收集器能够跟踪托管对象的生命周期 封装了一个非托管资源,它没有特定的 有关如何清理资源的知识。当你创建一个 封装非托管资源的对象,建议 您提供必要的代码来清理非托管资源 公共Dispose方法。通过提供 Dispose 方法,您可以启用 你的对象的用户在他们使用时显式地释放它的内存 对象完成。

    综上所述,我们不能武断地说,只要内存使用率有所下降,就一定意味着Garbage Collection在运行。可能这个时候,Dispose这个方法就是用来释放内存的。

    更多信息,您可以查看:Automatic Memory Management和Releasing Memory for Unmanaged Resources。

    【讨论】:

      猜你喜欢
      • 2017-08-04
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多