Xamarin pérdida de memoria Android con actividad simple

Estoy rastreando el uso de memoria y fugas en mi proyecto Xamarin Android y decidí comenzar en una de las páginas simples.

Al iniciar el tablero / actividad de lanzamiento Tengo 21.790 MB de memoria asignada y un tamaño de montón de 26.016 MB.

Cuando abro la actividad de ayuda, simplemente creo una actividad con el método OnCreate parecido a:

protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.HelpActivity); ActionBar.SetDisplayHomeAsUpEnabled(true); _quickstartGuideLinearLayout = FindViewById<LinearLayout>(Resource.Id.quickstart_guide_layout); _quickstartGuideLinearLayout.Click += ViewQuickstart; _usermanualLinearLayout = FindViewById<LinearLayout>(Resource.Id.user_manual_layout); _usermanualLinearLayout.Click += ViewUserManual; } 

Y luego en OnDestroy:

 protected override void OnDestroy() { if (_quickstartGuideLinearLayout != null) { _quickstartGuideLinearLayout.Click -= ViewQuickstart; _quickstartGuideLinearLayout.Dispose(); _quickstartGuideLinearLayout = null; } if (_usermanualLinearLayout != null) { _usermanualLinearLayout.Click -= ViewUserManual; _usermanualLinearLayout.Dispose(); _usermanualLinearLayout = null; } base.OnDestroy(); } 

El uso de la memoria aumentará hasta 22.102 MB cuando se muestre la actividad de ayuda, y cuando haga clic en el botón de la barra de acción o hacia arriba, sólo bajará a 22.078 MB.

¿Cómo es posible que no vuelva a bajar a 21.790 MB si la actividad de ayuda se destruye?

Parece que lo han arreglado agregando Dispose () a mi OnDestroy () de la siguiente manera:

 protected override void OnDestroy() { base.OnDestroy(); Dispose(); } 

EDIT: Nevermind parece como si fuera puramente debido a mí llamando a GC.Collect () junto con Dispose (). Eliminar Dispose () no tuvo ningún efecto negativo por lo que estoy adivinando mi problema original sólo se basa en el hecho de que la pequeña cantidad inconsequential de aumento de la memoria no está causando el Mono GC para ejecutar que es por naturaleza cómo se supone que las cosas.

EDIT Soporte de Per Xamarin: No es necesario llamar a Dispose en la actividad en OnDestroy (). Los objetos que se encuentran a través de FindViewById se deben disponer en OnDestroy llamando a .Dispose () en cada uno, así como eliminar los controladores de eventos a través de – = MyEventHandler;

  • No se pueden analizar los datos xml a listview en xamarin android
  • ¿Se ejecutará una aplicación con armeabi sólo en dispositivos armeabi-v7a?
  • Simulaciones de desarrollo de Android de MonoDroid
  • Recepción de SMS con MonoDroid
  • Añadir elevación / sombra en la barra de herramientas para dispositivos pre-lollipop
  • Cómo se utiliza la clase BluetoothA2dp en Xamarin
  • Xamarin android guardar archivo de texto
  • Visual Studio no reconoce la función BindingInflate de MvxFragment
  • Descenso Xamarin.Android
  • MonoDroid: Controlador de errores global
  • Jar-Binding de ActionBarSherlock para Mono para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.