2017-10-09 7 views
2

Quand je profil de mémoire de l'application dans Android studio je peux voir la consommation des différentes catégories de mémoire,Comment puis-je voir les allocations de mémoire native et graphiques dans Android Studio 3.0

enter image description here

mais quand je largue tas Java (bouton du milieu), je reçois des allocations que de tas,

enter image description here

qui était attendu du nom du bouton. Mais je peux encore voir les tableaux char et Strings alloués jusqu'ici, mais comme nous le savons dans les versions récentes, les tableaux char de String sont déplacés dans le tas natif et la classe String n'y accède que via des méthodes natives, il s'avère que ce tas affiche aussi tas natif. Ai-je raison? Qu'en est-il du tas graphique?

+0

@Zoe pourquoi avez-vous retiré android-studio tag? En fait, je m'attendais à ce que quelqu'un de l'équipe AS donne des explications – LackOfKnowledge

+0

Cette question est en fait très spécifique à un outil qui fait partie d'Android Studio. S'il vous plaît essayez de ne pas faire des modifications nuisibles ou triviales @zoe –

Répondre

1

Bien que ce ne soit pas une source d'autorité par tous les moyens, moi-même et d'autres ont essayé d'expliquer l'utilisation de la mémoire java here. Pour autant que je sache (quelqu'un qui travaille avec ART ou Davlik peut vous donner une réponse beaucoup plus précise) il n'y a qu'un seul tas disponible pour l'ensemble de votre application, pas de tas de graphiques spécifiques.

Ce que Android Studio est probablement en train de vous montrer est la quantité de tas qui est consommée par les opérations graphiques. Similaire à la façon dont le segment de mémoire Stack (vert) vous montre ce que la pile d'appels actuelle est en train de consommer. Vous pouvez voir comment cela se reflète dans votre code en mettant en évidence un segment:

enter image description here

Lorsque vous utilisez ce point de vue, vous devez vous rappeler de sélectionner votre tas d'application dans le menu déroulant:

enter image description here

Natif & Les segments Java indiquent la quantité de mémoire allouée directement via les frameworks SDK/Java et la quantité nativement à travers les structures sous-jacentes. (Ils ne vous montrent pas des zones de mémoire au sein de votre application, il peut sembler déroutant - voir le lien à la fin)

enter image description here

La meilleure vue d'ensemble de ce qu'est exactement le profileur vous montre est dans le Developer Documentation ce qui décrit également ce que System Image et les tas de zygote sont pour vous aussi.

1

Quelqu'un connaît-il la mémoire 'Graphics'? Pourquoi consomme-t-il autant de mémoire dans une application simple?

J'ai créé une application simple, et il n'y a qu'un seul RecyclerView dans HomeActivity, mais la mémoire 'Graphics' prend environ 60MB!

enter image description here

est ici capture d'écran de la HomeActivity.

enter image description here