首页 > 解决方案 > GC 的 Xamarin 调试输出的含义

问题描述

在调试物理设备时,我运行用 C# Xamarin for Android(Target framework android 8.1)编写的应用程序并获得这样的日志消息:

09-20 08:53:04.165 D/Mono    (25500): GC_BRIDGE: Complete, was running for 0.14ms
09-20 08:53:04.165 D/Mono    (25500): GC_MINOR: (Nursery full) time 2.53ms, stw 3.56ms promoted 40K major size: 13040K in use: 10738K los size: 40968K in use: 38154K
09-20 08:53:04.617 D/Mono    (25500): GC_BRIDGE waiting for bridge processing to finish
09-20 08:53:04.621 D/Mono    (25500): GC_TAR_BRIDGE bridges 0 objects 0 opaque 0 colors 0 colors-bridged 0 colors-visible 91 xref 1 cache-hit 0 cache-semihit 0 cache-miss 0 setup 0.10ms tarjan 0.12ms scc-setup 0.20ms gather-xref 0.01ms xref-setup 0.00ms cleanup 0.00ms

有人知道这方面的文档吗?

例如:GC_MINOR:什么time意思?什么stw意思?什么size意思?等等

标签: c#androidxamarinmono

解决方案


根据单声道文件

最初使用快速凹凸指针技术在托儿所中分配对象。当nursery 已满时,我们开始一个nursery 收集:这是通过复制GC 执行的。

  • time可能是垃圾收集的时间
  • stw意思是“停止世界”,这意味着程序停止执行垃圾收集的时间。
  • SGen中有3个堆,nursery、major heap和大对象存储。这些size值表示这些堆的当前大小。
  • promoted表示有多少 Nursery 被提升到了主堆

推荐阅读