web-dev-qa-db-fra.com

Erreur de mémoire insuffisante sur l'émulateur Android, mais pas sur l'appareil

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?

19
piojo

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);
}
15
ol_v_er

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.

13
Avram Score

Vous devez augmenter la taille du tas pour l'émulateur - cela a fonctionné pour moi, je l'ai augmenté de 16 M à 32 M

5
Atul D

Voici un paresseux pour savoir comment trouver les options pour manipuler heapsize for emulator de Andriod studio 1.2.0

  1. Menu Outils-> Android-> Gestionnaire AVD
  2. éditer le périphérique virtuel de votre choix
  3. cliquez sur paramètres avancés et faites défiler

Change VM heap in Android studio

3
Aksel Willgert

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 .

1
anon

Augmenter la taille de la mémoire allouée ...

0