Google Maps API Android v2 SupportMapFragment fuite de mémoire

À l'aide de 2 activités simples. Première Activité qui ne tient que sur un bouton pour démarrer la 2ème Activité qui est titulaire de la carte:

Activité Principale:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void goToMap(View view){ //This is just the onClick method for the button
    Intent intent=new Intent( this, BigMapTest.class);
    startActivity(intent);
}

L'activité sur la carte:

public class BigMapTest extends FragmentActivity {
SupportMapFragment mapFragment;
GoogleMap map;

@Override
protected void onCreate(Bundle arg0) {
    //TODO Auto-generated method stub
    super.onCreate(arg0);

    setContentView(R.layout.travel_diary_big_map);

    mapFragment=(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.big_map);
    map=mapFragment.getMap();

}

Le XML Mise en page de la carte d'activité:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<fragment
        android:id="@+id/big_map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        class="com.google.android.gms.maps.SupportMapFragment"  
        />

Maintenant lorsque j'exécute ce code, appuyez sur le bouton pour passer à l'Activité avec la carte, et en appuyant sur la touche back pour se rendre à la première activité...puis en répétant le processus, je peux voir le tas de l'augmentation de la taille à chaque fois, jusqu'à ce qu'il atteint ses limites, et puis il commence de serrage. Si vous gâcher un peu plus avec la carte(c'est à dire le zoom), je peux avoir une OOM Exception à ce point.

01-25 16:10:13.931: D/dalvikvm(21578): GC_FOR_ALLOC libéré 1898K, 7% gratuit 45859K/49187K, pause 204ms

01-25 16:10:14.671: I/dalvikvm-tas(21578): Pince cible GC tas de 52.724 MO à 48.000 MO

01-25 16:10:14.671: D/dalvikvm(21578): GC_CONCURRENT libéré 2534K, 6% gratuit 46554K/49187K, pause 3ms+14ms

01-25 16:10:15.372: I/dalvikvm-tas(21578): Pince cible GC tas de 52.979 MO à 48.000 MO

01-25 16:10:15.382: D/dalvikvm(21578): GC_CONCURRENT libéré 2273K, 5% gratuit 46815K/49187K, pause 3ms+15ms

01-25 16:10:15.622: I/dalvikvm-tas(21578): Pince cible GC tas de 52.604 MO à 48.000 MO

01-25 16:10:15.622: D/dalvikvm(21578): GC_FOR_ALLOC libéré 657K, 6% gratuit 46431K/49187K, pause 202ms

01-25 16:10:16.203: I/dalvikvm-tas(21578): Pince cible GC tas de 52.959 MO à 48.000 MO

01-25 16:10:16.203: D/dalvikvm(21578): GC_FOR_ALLOC libéré 1469K, 5% gratuit 46796K/49187K, pause 217ms

01-25 16:10:16.203: I/dalvikvm-tas(21578): Forcer la collection de SoftReferences pour 278744-allocation d'octets

01-25 16:10:16.423: I/dalvikvm-tas(21578): Pince cible GC tas de 52.952 MO à 48.000 MO

01-25 16:10:16.423: D/dalvikvm(21578): GC_BEFORE_OOM libéré 9K, 5% gratuit 46786K/49187K, pause 219ms

01-25 16:10:16.423: E/dalvikvm-tas(21578): de mémoire sur un 278744-allocation d'octets.

Des suggestions/aide serait appréciée.

  • Utilisation de TAPIS de sol pour déterminer la source de votre fuite.
  • À l'aide de TAPIS et alors la recherche de l'objet avec la plus grande retenue de la taille (qui ne cesse de grandir à chaque cycle) puis en utilisant le chemin d'accès à la GC racines à l'exclusion des références faibles, j'ai atteint les suivants: cartes de la classe.par.un @ 0x414f7fa8 Système de Classe. - Mais je ne sais pas quoi faire ensuite.
  • Il semble que quelque chose est accumilating dans une table de hachage: La classe "des cartes.par.une", chargé par "dalvik.système.PathClassLoader @ 0x413de740", occupe 12,923,112 (57.78%) octets. La mémoire est accumulé dans une instance de java.util.HashMap$HashMapEntry[]" chargé par "<système de chargeur de classe>". Mots-clés java.util.HashMap$HashMapEntry[] cartes.par.un dalvik.système.PathClassLoader @ 0x413de740
  • Eh bien, ce n'est pas prometteuse. Ai-je une chance peut con vous dans le téléchargement de l'ensemble du projet de test quelque part afin que je puisse prendre un coup d'oeil?
  • Assurez-vous. Bien que je suis très nouveau à ce...Où serait-il approprié de la charge de trop? (Si le projet est très petite, comme décrit ci-dessus)
  • Dépôt GitHub, le fichier ZIP sur le public de DropBox, le fichier ZIP sur Amazon S3, ...
  • dl.dropbox.com/u/83195107/MapMemoryLeakTest.zip
  • OK, je vais jeter un oeil à ce cours du week-end et de faire rapport des résultats.
  • Je vous remercie beaucoup.
  • Google ont reconnu ce problème et a déclaré que cela sera corrigé avec la prochaine version de Maps API Android. code.google.com/p/gmaps-api-issues/issues/detail?id=4766
  • Question est - à quand la prochaine sortie?

InformationsquelleAutor Nims | 2013-01-25