GC的Xamarin调试输出的含义

时间:2018-09-20 07:35:17

标签: c# android xamarin mono

我正在运行用C#Xamarin for Android(目标框架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是什么意思?等

2 个答案:

答案 0 :(得分:2)

根据the mono documentation

  

对象最初是使用快速凹凸指针技术在托儿所中分配的。托儿所装满后,我们将开始托儿所收集:这是通过复制GC进行的。

  • time大概进行垃圾收集的时间
  • stw的意思是“停止世界”,这意味着程序停止执行垃圾收集的时间。
  • SGen中有3个堆,分别是托儿所,主要堆和大型对象存储。 size值指示这些堆的当前大小。
  • promoted表示有多少托儿所已升级为主要堆房

答案 1 :(得分:1)

CG代表垃圾收集器。

CG_MINOR是 SGen 用于为新对象分配空间的堆之一, SGen 是Xamarin使用的默认垃圾收集器。

从Xamarin文档中:

  

苗圃–这是分配新的小对象的地方。当。。。的时候   托儿所空间不足,将发生少量垃圾收集。任何   活动对象将被移至主堆。

您可以获得有关Xamarin垃圾收集herehere的更多信息