Je ne trouve aucune description de cette statistique dans la documentation destinée aux développeurs Android. Voici un lien vers ce que j'ai regardé le plus récemment: https://developer.android .com / studio / profile / memory-profiler
Voici ce que je pense que c'est: le nombre d'objets dans le tas qui n'ont pas été désalloués.
Veuillez, si possible, fournir une ressource crédible qui prend en charge votre raisonnement (par exemple, une conférence Google I / 0 sur Youtube avec une marque minute ou une documentation Android).
MODIFIER: Voici une capture d'écran qui comprend la métrique.
3 Réponses :
Voici ce que je pense que c'est: le nombre d'objets dans le tas qui ont n'a pas été désalloué.
Vous avez raison, mais je ne peux pas vous servir de fil de discussion public à ce sujet.
Oui, c'est le nombre total d'instances allouées avant la période sélectionnée + allocation de mémoire pour la période sélectionnée (ou comme vous le dites: nombre d'objets (instances) dans le tas qui n'ont pas été désalloués pour la période sélectionnée période)
Vous pouvez voir cela ici
Sur la vue d'instance, on peut voir que trois tableaux int
ont été alloués à 1m, mais pas désalloués (pour la période sélectionnée).
La
Total Count
est définie comme le nombre total d'objets (voir Source Android Studio ), en particulier:
Total Count = Snapshot objects + New allocations - New deallocations
Ce getTotalObjectCount ()
est défini comme :
if (isAllocation) { myDeltaAllocations++; } else { myDeltaDeallocations++; }
Le La valeur mySnapshotObjectCount
est incrémentée à l'intérieur de addSnapshotInstanceObject
, qui contient le commentaire utile:
Ajoutez une instance à l'instantané de base et mettez à jour la comptabilité de les valeurs "totales".
Les valeurs myDeltaAllocations
et myDeltaDeallocations
sont incrémentées à l'intérieur de addDeltaInstanceInformation
:
public int getTotalObjectCount() { return mySnapshotObjectCount + myDeltaAllocations - myDeltaDeallocations; }
Cela s'appelle à l'intérieur de la partition
, qui contient le commentaire utile:
Partitionne les
InstanceObjects
danssnapshotInstances
etmyDeltaInstances
selon la stratégie actuelle deClassifierSet
. Cela consommera les instances de l'entrée.
Cette snapshotInstance
est la même que celle utilisée pour incrémenter mySnapshotInstanceObjectCount
, montrant ainsi que les 3 valeurs sont très étroitement liées, sont créées lorsqu'une partition (snapshot ) est fait, et tous les facteurs dans le décompte total.
La réponse finale est donc:
new AttributeColumn<>( "Total Count", () -> new SimpleColumnRenderer<ClassifierSet>( value -> Integer.toString(value.getAdapter().getTotalObjectCount()), value -> null, SwingConstants.RIGHT),
Cette définition de l'équation correspond à ce qu'Axifive a déclaré dans une autre réponse et à la vidéo associée.
Travail fantastique! Pourriez-vous également fournir des explications sauvegardées par le code source pour les objets Snapshot
, les nouvelles allocations
et les nouvelles désallocations
dans votre réponse? J'espère que vous avez fait vos recherches, mais j'aimerais laisser ma foi généreuse avec une preuve complète et pédantiquement écrite en ce qui concerne une réponse basée sur le code source comme la vôtre, et je ne me fais pas confiance pour comprendre pleinement le code source par moi-même.
@GrantPark Bien sûr. J'ai ajouté des informations sur la façon dont les 3 sont incrémentés, ainsi que sur la connexion entre eux. Si je vais plus loin, je crains d'expliquer le code ligne par ligne, mais faites-moi savoir tout autre domaine qui doit être amélioré! Merci pour le conseil.
Il est donc utile de voir où ces méthodes sont appelées ainsi que les commentaires pertinents, mais j'aimerais savoir comment ces éléments sont calculés, par exemple. le décompte des objets snapshot
intègre-t-il le décompte de désallocation de l'objet avant le snapshot? Cela dit, j'apprécie sincèrement votre temps pour fouiller dans le code source du profileur - cela constitue une réponse forte étant donné qu'il n'y a pas de documentation appropriée.
Pour autant que je sache, c'est juste le nombre d'objets (donc les allocations / désallocations ne sont pas incluses), mais pas assez confiant à ce sujet pour les inclure dans la réponse. J'y reviendrai en rentrant du travail!
Pourriez-vous compléter la question avec une capture d'écran?
Capture d'écran ajoutée comme demandé.