AndroidGameView + GC_MINOR

Tengo una aplicación bastante compleja basada en OpenGL que utiliza AndroidGameView para configurar los contextos de dibujo, etc. Me di cuenta de que en algún momento en el pasado (no siempre fue así) que empecé a obtener constantes GC_MINOR mensajes en la consola al probar el en un Nexus 7 cada segundo o dos.

También me di cuenta de que el proyecto de plantilla básica para "Android OpenGL Application" (en Xamarin Studio) también sufre de un problema similar. La creación de un nuevo proyecto a partir de esta plantilla y su ejecución en los resultados de hardware en los siguientes mensajes en la consola cuando la aplicación se acaba de sentar y ejecutar:

 [Mono] GC_BRIDGE num-objects 8 num_hash_entries 8 sccs size 8 init 0.00ms df1 0.12ms sort 0.00ms dfs2 0.24ms setup-cb 0.03ms free-data 0.03ms user-cb 26.49ms clenanup 0.12ms links 0/0/0/0 dfs passes 16/8 [Mono] GC_MINOR: (Nursery full) pause 51.85ms, total 52.00ms, bridge 26.98ms promoted 848K major 1120K los 186K [Mono] GC_MINOR: (Nursery full) pause 49.65ms, total 49.80ms, bridge 0.00ms promoted 544K major 1664K los 186K [Mono] GC_MINOR: (Nursery full) pause 50.72ms, total 50.93ms, bridge 0.00ms promoted 544K major 2208K los 186K [Mono] GC_MINOR: (Nursery full) pause 84.78ms, total 85.02ms, bridge 0.00ms promoted 560K major 2768K los 186K [Mono] GC_MINOR: (Nursery full) pause 58.10ms, total 58.23ms, bridge 0.03ms promoted 560K major 3328K los 186K [Mono] GC_MINOR: (Nursery full) pause 49.32ms, total 49.47ms, bridge 0.00ms promoted 544K major 3872K los 186K [Mono] GC_BRIDGE waiting for bridge processing to finish [Mono] GC_BRIDGE num-objects 1 num_hash_entries 1 sccs size 1 init 0.00ms df1 0.24ms sort 0.03ms dfs2 0.00ms setup-cb 0.00ms free-data 0.03ms user-cb 25.57ms clenanup 0.12ms links 0/0/0/0 dfs passes 18/9 [Mono] GC_MINOR: (Nursery full) pause 135.53ms, total 135.77ms, bridge 25.82ms promoted 560K major 4432K los 186K 

Mi pregunta es: ¿por qué está sucediendo esto? Estoy seguro de que tiene algo que ver con el AndroidGameView subyacente, pero no siempre fue así. En mi aplicación actual, la constante GC'ing está teniendo un impacto negativo en el rendimiento gráfico general (parece "hipo" un poco como el GC_MINOR pausas para 50-100ms).

Creo que Xamarin corrigió este comportamiento en 5.1

Echa un vistazo – https://developer.xamarin.com/releases/android/xamarin.android_5/xamarin.android_5.1/#GC-free-Method_Invocations

Anteriormente, asignaron algunos wappers de .NET a objetos Java cada llamada de Actualización / Draw. Para mi mente la tasa de asignación era de unos 5-10kb por segundo. Esto podría llevar a GC cada minuto o sobre eso.

  • Manejo de URL específicas con filtros de intenciones en Xamarin Mono para Android
  • ¿Cómo obtener Mono Xamarin carpeta de la ruta de acceso de Android?
  • Error de compilación de Android C # Xamarin
  • Mostrar mensaje para conocer la ubicación
  • Uso de la memoria de aplicaciones Android de Xamarin
  • Serialización de objetos para una nueva actividad
  • Teclado rápidamente se oculta y reaparece en Android usando Xamarin Forms
  • Xamarin.Forms swipe gesture recognizer
  • (Android Xamarin) Obtener valor de cadena de recursos en lugar de int
  • Xamarin iOS localización utilizando .NET
  • Resource.designer.cs NO se está regenerando en Mono (Xamarin Studio)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.