2017-07-31 65 views
1

在Xamarin.iOS,是有可能記錄:當一個大垃圾回收時是否有可能記錄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中的垃圾收集細節?任何見解將不勝感激。

回答

1

您可以設置單聲道環境變量以輸出GC信息。這些可以是臨時的或永久的。

永久ENV。瓦爾設置經由iOS的構建選項(mtouch)和燒製到該應用,從而展開ipa

--setenv:MONO_LOG_LEVEL=info --setenv:MONO_LOG_MASK=gc 

enter image description here

溫度。用於調試的env vars通過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