2013-06-17 2 views
2

Bonne journée, J'ai un assez gros projet actuellement localisé à 21 langues où une langue a environ 9000 mots! Ce n'est pas si intéressant, maisLes chaînes localisées (Android) ont pris trop de mémoire

  • compilé et a commencé l'application avec toutes ces ressources, a pris après le démarrage autour 11 Mo en mémoire (simplement mesurée par Debug.getNativeHeapSize())

  • lorsque je retire 20 langues et ne garder que par défaut, il a commence après seulement 7.5 MB

Parce que le plus grand problème de mon application sont des dispositifs d'esprit h mémoire faible disponible pour un seul processus (principalement les anciens appareils avec Android 2.X), c'est une question très sérieuse pour moi.

Alors vient ici deux questions, l'espoir que quelqu'un aura toute suggestion utile

  1. Je pense que les charges Android uniquement les ressources nécessaires, alors comment il est possible que ces langues fait la différence si énorme, quand en mémoire s'il n'y a pas d'explication pour le point 1., y a-t-il un moyen de précompiler les ressources dans des paquets séparés et de les télécharger sur demande? Par exemple dans une activité de démarrage où l'utilisateur choisit la langue qu'il veut utiliser?

Les suggestions sont les bienvenues. Merci

+1

Utilisez MAT pour déterminer précisément où se situe la différence de mémoire. – CommonsWare

+0

pour ma très grande surprise, les deux versions montrent exactement les mêmes résultats - http://tinypic.com/r/2ptuzxw/5 - semble donc que Debug.getNativeHeapSize() n'est pas la meilleure méthode pour vérifier la quantité de mémoire actuellement occupée. Merci pour le bon point ... comment puis-je vous accepter de répondre si c'est "juste" un commentaire? –

Répondre

0

La mesure de la mémoire sur Android n'est pas sans rappeler une partie de Zork: un labyrinthe de petits passages sinueux, tous semblables.

Si vos préoccupations sont des choses dans la machine virtuelle, la meilleure façon d'obtenir des réponses (à mon humble avis) est d'utiliser MAT. Particulièrement sur Android 3.0 et supérieur, si vous allouez de la mémoire dans le SDK, il devrait apparaître ici.

Pour une discussion plus approfondie des moyens non-MAT de mesure de l'utilisation de la mémoire, et de leurs pièges, je recommande Dianne Hackborn's epic answer on the subject.

+0

merci, votre aide est appréciée –

Questions connexes