[Из песочницы] Оптимизация использования памяти в Xamarin приложениях

Habrahabr 3
Xamarin удивителен тем, что позволяет .NET разработчикам писать приложения для Android, iOS, macOS на… С#. Но эта удивительная возможность имеет свою цену и даже простейшее приложение может запросто потреблять неприлично много памяти. Давайте посмотрим как это происходит и что мы можем сделать с этим. Большинство моих примеров основываются на Xamarin.Android, но вы быстро заметите, что это также применимо и к Xamarin.iOS.
Как работает сборщик мусора в Xamarin приложениях
На самом деле в Xamarin приложениях используется несколько типов объектов. Каждое Xamarin приложение имеет объекты, которые живут в двух отдельных мирах:
Управляемый, мир Mono с объектами, наследуемыми из System.Object
Неуправляемый, нативный мир с объектами, наследуемыми от NSObject (iOS) или Java.Lang.Object (Android)
Из этого также следует что существуют и работают 2 сборщика мусора:
Сборщик мусора от Mono, называемый SGEN
Сборщики мусора из нативных миров Android или iOS
Читать дальше →