Sur l'émulateur Android, lorsque je quitte mon application et que je l'exécute à nouveau immédiatement, je reçois
OutOfMemoryError: bitmap size exceeds VM budget.
Mais sur l'appareil lui-même, cela ne se produit pas. Pourquoi?
Sur un émulateur, la taille de segment maximale par défaut est d'environ 13 Mo.
Sur un appareil, cela dépend du téléphone et de la version Android. Sur mon Motorola Droid, la taille maximale du segment de mémoire est d'environ 21 à 22 Mo et sur mon HTC Desire, elle est d'environ 32 Mo.
C'est pourquoi vous avez un crash sur l'émulateur et non sur votre appareil.
Si vous souhaitez surveiller la taille de tas de votre application, vous pouvez appeler une méthode similaire:
protected void displayMemoryUsage(String message) {
int usedKBytes = (int) (Debug.getNativeHeapAllocatedSize() / 1024L);
String usedMegsString = String.format("%s - usedMemory = Memory Used: %d KB", message, usedKBytes);
Log.d(TAG, usedMegsString);
}
Augmentez AVD RAM et la taille maximale du segment d'application VM dans les options VM.
Pour ce faire, allez à
Fenêtre -> Gestionnaire AVD -> Périphériques virtuels -> Modifier.
Vous devez augmenter la taille du tas pour l'émulateur - cela a fonctionné pour moi, je l'ai augmenté de 16 M à 32 M
Voici un paresseux pour savoir comment trouver les options pour manipuler heapsize for emulator de Andriod studio 1.2.0
C'est probablement parce que votre appareil a plus de mémoire que votre émulateur. Cette SO question vous montre comment augmenter la taille de votre émulateur.
En outre, vous pouvez augmenter la taille de segment Java VM Heap .
Augmenter la taille de la mémoire allouée ...