2017-07-10 1 views
0

Quand je courais mon application Xamarin.Android sur l'émulateur, il est écrasé lorsque GREF a augmenté à 2001:Augmenter Android Emulator GREF

07-10 13:08:12.113 D/dalvikvm(2154): GREF has increased to 2001 
07-10 13:08:12.113 W/dalvikvm(2154): JNI global reference table (0xb9059ae0) dump: 
07-10 13:08:12.113 W/dalvikvm(2154): Last 10 entries (of 2001): 
07-10 13:08:12.113 W/dalvikvm(2154):  2000: 0xab294a58 android.widget.RelativeLayout$LayoutParams 
07-10 13:08:12.113 W/dalvikvm(2154):  1999: 0xab2949f8 mono.android.view.View_OnClickListenerImplementor 
07-10 13:08:12.113 W/dalvikvm(2154):  1998: 0xab294828 android.widget.RelativeLayout$LayoutParams 
07-10 13:08:12.113 W/dalvikvm(2154):  1997: 0xab294458 android.widget.ImageView 
07-10 13:08:12.113 W/dalvikvm(2154):  1996: 0xab294320 android.widget.RelativeLayout$LayoutParams 
07-10 13:08:12.113 W/dalvikvm(2154):  1995: 0xab2942c0 mono.android.view.View_OnClickListenerImplementor 
07-10 13:08:12.113 W/dalvikvm(2154):  1994: 0xab293cc8 android.widget.TextView 
07-10 13:08:12.113 W/dalvikvm(2154):  1993: 0xab293658 android.widget.RelativeLayout 
07-10 13:08:12.113 W/dalvikvm(2154):  1992: 0xab290998 android.widget.RelativeLayout$LayoutParams 
07-10 13:08:12.113 W/dalvikvm(2154):  1991: 0xab290860 android.widget.RelativeLayout$LayoutParams 
07-10 13:08:12.113 W/dalvikvm(2154): Summary: 

Sur appareil Android, il fonctionne bien. Existe-t-il le moyen de se débarrasser de GREF ou d'augmenter le nombre de GREF avant que l'application Android sur l'émulateur ne l'écrase?

Merci.

Répondre

0

émulateurs ont un nombre limité de GREF. Le nombre est ~ 2000. Vous atteignez cette limite. Votre meilleur plan d'action ici est de simplement tester sur un appareil réel car ils ont un nombre de GREF beaucoup plus élevé (~ 52000).

Bien qu'il n'y ait pas une bonne façon d'augmenter, vous pouvez potentiellement essayer la propriété suivante:

adb shell setprop debug.mono.max_grefc <integer value>

https://developer.xamarin.com/guides/android/advanced_topics/environment/#debug.mono.maxgrefc

Cependant mes conseils en ce qui concerne l'exécution sur un appareil est la situation idéale ici.

0

Je n'ai pas encore eu une analyse complète du comportement que vous voyez - sans un échantillon complet de votre code, c'est très difficile à faire.

Le cas général des listes liées est que les GREFs sont incrémentés:

  • une fois pour chaque élément ListView - car qui est utilisé dans la liste
  • une fois pour chaque objet View dans le ListView qui a une propriété ou un événement lié - eg si vous liez à un TextView et un bouton dans chaque élément ListView, le C# va stocker des références à ces vues

Vous pouvez consulter ce lien pour l'aide

https://forums.xamarin.com/discussion/568/when-to-release-dispose-java-objects-jni-gref-question#latest