Angenommen, ich habe ein Bild in ein Bitmap-Objekt wie geladen
Bitmap myBitmap = BitmapFactory.decodeFile(myFile);
Was passiert nun, wenn ich eine andere Bitmap wie lade?
myBitmap = BitmapFactory.decodeFile(myFile2);
Was passiert mit der ersten myBitmap? Wird es Garbage Collected oder muss ich es manuell sammeln, bevor ich eine andere Bitmap lade, z. myBitmap.recycle()
?
Gibt es auch eine bessere Möglichkeit, große Bilder zu laden und nacheinander anzuzeigen, während Sie unterwegs recyceln?
Nachdem die Bitmap in den Speicher geladen worden war, wurde sie tatsächlich aus zweiteiligen Daten erstellt. Der erste Teil enthält einige Informationen über die Bitmap, der andere Teil enthält Informationen über die Pixel der Bitmap (sie besteht aus einem Byte-Array). Der erste Teil existiert im verwendeten Java-Speicher, der zweite Teil existiert im verwendeten C ++ - Speicher. Es kann den Speicher des anderen direkt verwenden. Bitmap.recycle () wird verwendet, um den Speicher von C ++ freizugeben. Wenn Sie dies nur tun, sammelt der GC den Teil von Java und der Speicher von C wird immer verwendet.
quelle
Timmmm hatte recht.
laut: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
Darüber hinaus wurden vor Android 3.0 (API Level 11) die Sicherungsdaten einer Bitmap im nativen Speicher gespeichert, der nicht vorhersehbar freigegeben wurde. Dies kann dazu führen, dass eine Anwendung kurzzeitig ihre Speichergrenzen überschreitet und abstürzt.
quelle