2017-07-31 29 views
1

は、ログインすることが可能です:Xamarin.iOSで大きなガベージコレクションが発生したときにログに記録できますか? Xamarin.iOSで

  • ...主要なガベージコレクションが発生したとき?
  • ...大規模なガベージコレクションにはどのくらいの時間がかかりましたか?

ログは、Console.WriteLineを使用するか、タイムスタンプ付きのテキスト行の線形ログを作成するカスタムログ実装を使用することを意味します。

GC.RegisterForFullGCNotification(Int32, Int32)GC.WaitForFullGC*() APIは(私たちは、古い製品のバグ修正のために使用され、Cycle 6 Service Release 4current stable releaseのように、ともしない)Xamarin.iOSに実装されていません。

私は高い頻度でGC.CollectionCount(1)(世代1の収集カウント)をポーリングするのに成功しました。しかし、これは私に、主要コレクションが最近起こったという情報を与えるだけです。また、それは主要コレクションが実際に世代コレクションであると仮定しています(this questionを比較)。

Xamarin.iOSにガベージコレクションの詳細を記録する他の方法はありますか?どんな洞察も大変高く評価されます。

答えて

1

Mono環境変数を設定してGC情報を出力することができます。これらは一時的または永続的なものである可能性があり

常設のenv。 VARSは、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 
関連する問題