Impossible d'allouer de la mémoire: 8

369

À partir d'aujourd'hui, lorsque j'ai essayé d'exécuter une application dans NetBeans sur une plate-forme Android 2.3.3, cela me montre que:

Impossible d'allouer de la mémoire: 8

Cette application a demandé au Runtime de la terminer de manière inhabituelle. Veuillez contacter l'équipe d'assistance de l'application pour plus d'informations.

et l'émulateur ne veut pas démarrer.

C'est la première fois que je le vois, et google n'a pas de réponse à cela, j'ai même essayé avec 2 versions de NetBeans 6.9.1 et 7.0.1, toujours la même erreur.

Δεηις Hoςς
la source
3
Juste curieux de savoir pourquoi vous utilisez NetBeans vs Eclipse. J'utilise NetBeans pour d'autres choses (à savoir php), mais je viens de trouver plus facile d'utiliser eclipse pour des trucs Android. Quels sont selon vous les avantages par rapport à l'éclipse?
SBerg413
3
Je n'ai jamais utilisé Eclipse auparavant, mais je ne sais pas pourquoi, je le déteste, la raison, c'est même compliqué dans l'interface graphique vs NetBeans, mais pour le moment je le télécharge, pour essayer, si le problème disparaît, je ferai Des trucs Android uniquement dedans.
Denees
47
Wow, ce commentaire était un massacre de virgule. Quoi qu'il en soit, assurez-vous que votre AVD utilise une quantité appropriée de RAM (c'est-à-dire suffisante pour fonctionner mais pas plus que ce que votre ordinateur peut gérer). Ceci est défini lorsque vous créez le périphérique virtuel.
Glendon Trullinger
2
Juste pour référence, j'ai un Core i7 avec 16 Go de RAM, maxxed out ram sur mes AVD et ils sont tous en retard malheureusement: /
Jack
1
J'ai une machine Windows 8 64 bits fonctionnant sur un processeur Intel Core i7. J'ai dû modifier les paramètres de ram pour cet AVD (Nexus 7) à 512 Mo pour qu'il fonctionne.
IgorGanapolsky

Réponses:

373

Je l'ai compris. Le problème était dans la quantité de RAM que j'avais spécifiée pour la machine virtuelle, et c'était 1024 Mo, maintenant j'ai 512 Mo et c'est ok, maintenant je dois trouver comment améliorer cette quantité de RAM, 512 n'est pas tellement, et la machine est un peu décalée.

Dénés
la source
20
J'ai le même problème avec cela. J'ai 8 Go de RAM sur ma machine, avec 6 Go libres tandis que l'émulateur Android me dit qu'il ne peut pas allouer 1 Go?
Strozykowski
5
J'ai également 8 Go de Ram, mais le SDK me dit que je ne peux pas l'utiliser plus de 512 :)
Denees
5
Un correctif de plus à ajouter. Parfois, la définition de RAM sur des valeurs inférieures ne fonctionne pas. Dans ce cas, essayez de lancer l'émulateur à partir de la ligne de commande avec quelque chose commeemulator-x86 -avd <your_avd_name>
Mykhailo Gaidai
14
Je viens de recevoir la solution: besoin de spécifier la résolution AVD avec force: 800 x 1280. Il démarre mon AVD comme ce dont j'avais besoin
Nirav Shah
4
Le problème vient de tout habillage d'affichage qui ajoute une valeur de 1024 à hw.ramSizedans le config.ini ( Device Ram Sizedans la liste Matériel de l'interface graphique). Assurez-vous de sélectionner un "skin" qui a une valeur inférieure, ou d'utiliser une résolution manuelle et de supprimer cette ligne de la liste Matériel - vous ne pouvez pas la supprimer lorsqu'un skin est sélectionné.
RedGlyph
61

Se référant à Android: n'a pas réussi à allouer de la mémoire et son premier commentaire sous la réponse acceptée, changer "1024" en "1024 Mo" m'a aidé. Pathétique, mais fonctionne.

Fenix ​​Voltres
la source
29
'MB' n'est pas reconnu par l'émulateur, le forçant à utiliser la valeur par défaut de 256 Mo. Sachez que le montant que vous spécifiez n'est pas ce que vous obtiendrez!
RedGlyph
1
En regardant sous Applications, Runnning, répertorie la quantité totale de mémoire à environ 240 Mo, il semble donc qu'elle revient à 256 Mo.
jishi
Ajouter dans la fenêtre Run Configurations le paramètre -memory 512 de ce lien l'a corrigé pour moi
GatesReign
43

Dans mon cas:

  • Utilisation du WXGA720 intégré pour simuler un appareil 720p, toujours cette erreur
  • Réglez manuellement la résolution AVD sur 720 x 1280, fonctionne pour moi

j'espère que cela aide ~

RRTW
la source
Similaire ici, la valeur par défaut pour le 7 "WXGA800 a échoué et le réglage de 800 x 1280 fonctionne.
xandy
30

Fonctionne avec 512 Mo à la place. Aucune des méthodes ci-dessus ne fonctionne pour moi.

slash33
la source
L'erreur «Impossible d'allouer de la mémoire: 8» a disparu après avoir réduit la taille de la RAM de 1024 à 768 Mib.
curd0
beaucoup d'entre eux disent la même chose pour fixer la taille de 512 Mo. Mais cela n'a pas du tout fonctionné
Steve
30

Tout ce que vous lisez ici et ailleurs n'est que pure conjecture. Le seul moyen sûr de résoudre ce problème est de voter pour ce rapport de bogue .

Le problème n'est pas lié à la résolution de l'émulateur ou à OpenGL, ni à la quantité de mémoire de votre ordinateur. J'ai 24 Go de mémoire sur mon ordinateur et la plupart du temps je cours avec hw.ramSize=1024une erreur 8. Parfois, cela fonctionne très bien sans aucun changement de configuration. J'espère que vous avez compris cela: je n'ai pas du tout modifié la configuration de l'émulateur et pourtant, parfois il fonctionne et parfois il échoue.

Il y a une forte probabilité que cela ait quelque chose à voir avec la fragmentation de la mémoire. Je recommande de réduire la valeur de hw.ramSizecomme solution de contournement temporaire.

Gili
la source
2
Avec tout le respect que je vous dois, votre réponse est également une pure conjecture; Pour moi, je n'ai aucun problème à exécuter un périphérique émulé avec une RAM virtuelle définie aussi haut que 2048 (je n'ai pas essayé plus haut). Cependant, ces appareils ne fonctionneront que lorsque j'accéderai à ma machine via Remote Desktop . Donc, pour moi, c'est certainement un problème graphique et non un problème de fragmentation de la mémoire. Je peux le prouver de manière fiable en sautant ma session d'avant en arrière entre local et distant. Même session, même instance du gestionnaire AVD, juste pas de terribles cartes NVIDIA et leurs pilotes divins dans un scénario. (Mais c'est une diatribe pour un autre fil).
s.co.tt
S'il s'agit de "fragmentation de la RAM", nous pourrions probablement tester cela en utilisant l'un de ces programmes gratuits de "défragmentation de la RAM", non?
Utilisateur
17

Il semble qu'il y ait mille correctifs différents pour cela ... aucune des solutions ci-dessus n'a fonctionné pour moi, mais ce qui a fonctionné était de lancer l'AVD à partir de la ligne de commande emulator-arm.exe @ AVD-NAME

D'une manière ou d'une autre, s'il était lancé avec seulement emulator.exe, j'obtiendrais le même message d'erreur que lorsque j'essayais de lancer via Eclipse.

Vincent Demers
la source
Vous pourriez avoir le même problème que moi. Les fichiers DLL sont chargés lorsque vous démarrez l'émulateur à partir d'un endroit et non si vous démarrez à partir d'un autre.
mjaggard
14

J'ai réalisé que la solution à ce problème provient de l'allocation de mémoire Eclipse lorsque vous exécutez l'application en mode normal. Je viens de cocher la case "Exécuter en tant qu'administrateur" sous les propriétés de raccourci pour Eclipse et maintenant cela me permet d'allouer plus de mémoire pour l'AVD.

J'espère que cela pourra aider.

Mahan H
la source
13

J'ai résolu ce problème en modifiant la taille de l'écran de l'appareil.

J'ai constaté que si vous spécifiez 1024 Mo de RAM, vous devez spécifier la taille de l'écran du périphérique en HDPI uniquement et s'il s'agit de 512 Mo de RAM, il devrait être mdpi ou autres.

Donc, nous pouvons clairement dire que la taille du ram doit être spécifiée en fonction de la taille de l'écran. Si vous spécifiez la taille de 1024 ram tout en conservant la taille de l'écran du périphérique en mdpi, cela entraîne l'erreur mentionnée ci-dessus, à savoir "Échec de l'allocation de mémoire: 8 Cette application a demandé au Runtime de la terminer de manière inhabituelle.

Veuillez contacter l'équipe d'assistance de l'application pour plus d'informations. "

ou

faites vos options dans le gestionnaire AVD comme suit:

[2013-01-11 14:44:01 - SDK Manager] hw.sensors.orientation = oui

[2013-01-11 14:44:01 - SDK Manager] hw.camera.front = none

[2013-01-11 14:44:01 - SDK Manager] hw.gps = oui

[2013-01-11 14:44:01 - Gestionnaire de SDK] skin.dynamic = no

[2013-01-11 14:44:01 - SDK Manager] hw.keyboard = no

[2013-01-11 14:44:01 - Gestionnaire de SDK] vm.heapSize = 32

[2013-01-11 14:44:01 - SDK Manager] hw.ramSize = 343

Vsw10
la source
Cela a fonctionné: [2015-07-23 12:54:59 - SDK Manager] disk.dataPartition.size = 500M [2015-07-23 12:54:59 - SDK Manager] hw.gpu.enabled = yes [2015- 07-23 12:54:59 - SDK Manager] hw.audioInput = yes [2015-07-23 12:54:59 - SDK Manager] hw.sensors.orientation = yes [2015-07-23 12:54:59 - SDK Manager] hw.camera.front = none [2015-07-23 12:54:59 - SDK Manager] hw.gps = oui [2015-07-23 12:54:59 - SDK Manager] skin.dynamic = non [2015-07-23 12:54:59 - SDK Manager] hw.keyboard = yes [2015-07-23 12:54:59 - SDK Manager] vm.heapSize = 32 [2015-07-23 12:54 : 59 - SDK Manager] hw.ramSize = 512
user914425
6

J'ai parcouru toutes les autres solutions mentionnées sur ce fil et je n'ai rien trouvé qui fonctionnait, alors j'ai réfléchi un peu. La version Google de l'API échouait sur moi pour une raison quelconque. Je l'ai changé en vanille et plus de crash.

Je dois avoir un autre problème mais peut-être que cela aidera quelqu'un ...

Helico
la source
Impair. J'étais réglé sur la version vanille, mais le passer à l'API Google l'a résolu. +1 pour l'idée quand même!
Paul
6

Jetez un œil au numéro officiel 33930 . Il est précisé que cela peut avoir à voir avec le démarrage d'OpenGL lors du démarrage de l'émulateur. D'autres l'ont écrit ne se bloquent que lorsqu'ils utilisent le skin WXGA800 et suggèrent de régler manuellement la résolution sur 800x1280.

De plus, des fichiers ZIP sont fournis pour rétrograder manuellement votre SDK Android vers la version 19 et les outils de plate-forme vers la version 11. Cela peut également aider à résoudre temporairement le problème.

Max
la source
Cela pourrait être lié à mon problème. Les fichiers DLL sont chargés lorsque vous démarrez l'émulateur à partir d'un endroit et non si vous démarrez à partir d'un autre.
mjaggard
Il doit y en avoir plus. Le régler d'abord sur WXGA800 puis le changer en une résolution manuelle de 1280x800 plante toujours AVD. La suppression du hw.ramSize=1024problème résout uniquement le problème (vous ne pouvez pas le faire si WXGA est sélectionné, vous devez utiliser les paramètres de résolution manuelle).
RedGlyph
5

J'ai 16 Go et un processeur quad core 3,4 Ghz dans ma machine. La machine virtuelle ne me permet pas non plus de l'exécuter à 1024. Je l'ai fait monter à 878 Mo car il a échoué à 880 avec le même message. Cela semble être le plus de RAM que je puisse allouer à l'émulateur. Il est toujours lent, mais je suppose qu'il vaut mieux que 512 Mo.

sondlerd
la source
5

Je modifie les paramètres DPI de mon moniteur à partir des options de lancement d'AVD et le synchronise avec les paramètres d'origine et actuels de mon moniteur, et cela a fonctionné.

Droid GEEK
la source
4

J'ai résolu en mettant la taille de stockage 2 fois la taille de la RAM et en mettant la taille de stockage SD de la même manière que la taille de la RAM.

Francesco Belladonna
la source
3

J'ai eu le même problème mais avant d'avoir le problème, il m'a demandé de capturer une source vidéo.

J'ai désactivé le support de la caméra et j'ai pu l'utiliser 1024MB of RAM.

Utilisation de Windows 64bit, Xoom (Android 3.0).

Barry Carter
la source
3

Dans mon cas, la résolution d'écran changeante de WVGA720 à WSVGA fonctionne pour moi.

Mabicho
la source
3

Le problème réside dans la fragmentation de la mémoire. Le système d'exploitation doit allouer tout le ram que vous avez spécifié pour vm (disons 1 Go) en un seul bloc continu. Parfois, il n'y a pas un tel bloc. Pour y remédier, fermez les programmes en cours d'exécution, puis exécutez avd et démarrez votre machine virtuelle.

Dave
la source
2

Ce qui a fonctionné pour moi sur Windows était:

1) Fermeture d'Eclipse 2) Exécution de l'interface utilisateur Avd 3) Fermeture de tous les processus en cours d'exécution, en particulier ceux qui sont lourds en mémoire, comme Chrome, explorer.exe, etc. 4) Démarrez l'émulateur 5) Win

Oren Bengigi
la source
2

Assurez-vous qu'IntelHAXM est installé correctement. Il ne suffit pas de le télécharger et de "l'installer" via le SDK Manager. Vous devez l'installer manuellement à partir de:

android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager

Assurez-vous également que la technologie virtuelle Intel est activée dans votre BIOS.

Suivez le guide sur developer.android.com ou les instructions d'installation d'Intel .

pegel
la source
2

Il vous suffit de modifier le RAM de votre appareil virtuel, ce qui le rend plus bas! Essayez 20 Mo et cela fonctionnera!

user2062658
la source
1

J'ai remarqué qu'il était lié à un seul avd tous les autres que j'ai bien travaillé. Je l'ai supprimé et créé un nouveau et maintenant cela fonctionne.

Jason Crosby
la source