在Xamarin.iOS中,是否可以记录:
使用日志记录,我的意思是使用Console.WriteLine
或自定义日志记录实现创建带有时间戳的文本行的线性日志。
GC.RegisterForFullGCNotification(Int32, Int32)
和GC.WaitForFullGC*()
API未在Xamarin.iOS上实施(截至current stable release,也未在Cycle 6 Service Release 4上实施,我们仍在使用错误修正对于较旧的产品)。
我已经成功地以高频率轮询GC.CollectionCount(1)
(第一代的收集计数)。但这只能给我一个主要收藏最近发生的信息。此外,这假设主要集合确实是第一代的集合(比较this question)。
是否有其他可能性在Xamarin.iOS中记录垃圾收集详细信息?任何见解将不胜感激。
答案 0 :(得分:1)
您可以设置Mono环境变量以输出GC信息。这些可能是暂时的或永久性的。
永久环境vars是通过iOS构建选项(mtouch
)设置的,并且被刻录到应用程序中,因此部署了ipa
--setenv:MONO_LOG_LEVEL=info --setenv:MONO_LOG_MASK=gc
温度。用于调试目的的env变量通过Run Configuration
设置。
输出:
2017-07-31 02:35:30.425 SushiHangover.FlightAvionics[88235:10243737] info: GC_MAJOR: (user request) time 0.90ms, stw 1.29ms los size: 1024K in use: 10K
2017-07-31 02:35:30.426 SushiHangover.FlightAvionics[88235:10243737] info: GC_MAJOR_SWEEP: major size: 1184K in use: 479K