Disons que j'ai chargé une image dans un objet bitmap comme
Bitmap myBitmap = BitmapFactory.decodeFile(myFile);
Maintenant, que se passera-t-il si je charge un autre bitmap comme
myBitmap = BitmapFactory.decodeFile(myFile2);
Que devient le premier myBitmap? Obtient-il Garbage Collected ou dois-je le ramasser manuellement avant de charger un autre bitmap, par exemple. myBitmap.recycle()
?
De plus, y a-t-il un meilleur moyen de charger de grandes images et de les afficher l'une après l'autre tout en recyclant en cours de route?
Une fois le bitmap chargé en mémoire, il était en fait composé de données en deux parties. La première partie comprend des informations sur le bitmap, une autre partie contient des informations sur les pixels du bitmap (il est composé d'un tableau d'octets). La première partie existe dans la mémoire utilisée Java, la seconde partie existe dans la mémoire utilisée C ++. Il peut utiliser directement la mémoire de l'autre. Bitmap.recycle () est utilisé pour libérer la mémoire de C ++. Si vous ne faites que cela, le GC collectera la partie de java et la mémoire de C sera toujours utilisée.
la source
Timmmm avait raison.
selon: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
De plus, avant Android 3.0 (niveau d'API 11), les données de sauvegarde d'un bitmap étaient stockées dans la mémoire native qui n'est pas libérée de manière prévisible, ce qui pourrait amener une application à dépasser brièvement ses limites de mémoire et à planter.
la source