2 votes

Android comment analyser la mémoire

Je travaille avec Android sur eclipse et en testant le code, j'ai remarqué que le heap augmentait à 44MB. Je cherche la variable que je maintiens en vie et je n'arrive pas à la trouver depuis quelques jours. En regardant dans le heap (DDMS -> Heap) j'obtiens ce qui suit :

enter image description here

J'ai essayé de cliquer sur le bouton "Dump HPROF file" en tant que a été montré ici mais je n'obtiens pas la boîte de dialogue d'enregistrement du fichier et je ne peux pas l'analyser. J'essaie donc de l'ignorer jusqu'à ce que j'obtienne un nouvel ordinateur

J'utilise Android eclipse sur Windows 7.
EDIT : Le problème était les ImageViews que je garde ; j'ai deux images que j'ai mis en ressource via le code avec une image de 0.5MB. Ma question est la suivante : est-il possible d'ajouter des ImageViews sans que le heap n'augmente autant ? et comment se fait-il que 2 images de 0.5MB provoquent une augmentation du heap de 40MB ?

1voto

Geobits Points 12623

Pour répondre à votre question, vos images de 0,5 Mo sont probablement compressées. Jpeg ou PNG, très probablement.

Cela n'a pas d'importance une fois qu'ils sont décodés. Ce qui importe alors, ce sont les dimensions de l'image et le format bitmap utilisé. Une image bitmap typique dans Android est ARGB_8888 soit 32 bits (4 octets) par pixel.

Cela signifie que chaque pixel (w*h) coûte 4 octets d'espace. En regardant la taille maximale (~15MB), il semble que votre image est probablement d'environ 1600x1200, ou environ 2MP.

C'est 1600 * 1200 * 4 = 15360000 soit ~15MB pour chaque image.

Pour la plupart des choses, vous ne devriez pas avoir besoin d'une image aussi grande sur un appareil mobile. Je ne connais pas votre application, mais si vous n'avez pas besoin d'une image de cette taille sur un appareil mobile, vous pouvez l'utiliser. besoin il est si grand, vous devriez envisager Chargement efficace de grandes images.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X