11
votes

Obtenir la taille des octets de la liste

Question idiote, mais dans une application Winforms, je travaille actuellement sur, je voudrais obtenir la quantité d'octets allouée / utilisée par une liste <[TOOOOBJECT]> détenu en mémoire (à des fins statistiques ). Est-ce possible? J'ai cherché à travers les options possibles, mais il n'y a évidemment pas myList.getTotalbytes () méthode.


0 commentaires

3 Réponses :



12
votes

Cela dépend vraiment de ce que vous voulez dire. Vous pouvez prédire combien d'octets seront utilisés par la liste elle-même - mais ce n'est pas la même chose que de prédire combien d'octets pourraient être éligibles pour la collecte des ordures si la liste devenait éligible à la collecte.

bits de la liste:

  • Le tableau de support ( t [] - une référence à un tableau que seule la liste aura accès à)
  • la taille (int)
  • une racine de synchronisation (référence)
  • le numéro de version (int)

    Le bit délicat est de décider combien compter. Chacun de ceux-ci est assez facile à calculer (en particulier si vous savez que T est un type de référence, par exemple), mais souhaitez-vous compter les objets référencés par la liste? Sont ces références les seules, ou non?

    Vous dites que vous voulez savoir "à des fins statistiques" - pourriez-vous être plus précis? Si vous pouvez dire ce que vous êtes vraiment intéressé (et un peu plus d'informations sur ce qui se trouve dans la liste et s'il existe d'autres références aux mêmes objets), nous pourrions probablement aider davantage.


4 commentaires

Salut Jon et Thanx 4La Répondre. désolé 4 ne pas être très clair. La liste est une collection d'entités de table remplacées à partir d'une requête LINQ. Et celui-ci contient principalement des types de chaîne et de temps de date.


"À des fins statistiques" - Disons que ma requête donne une collection contenant 10 000 objets entités et (en supposant que je puisse calculer cela mieux) chaque objet occupe sur AVG 25 octets de mémoire, je voudrais obtenir le total cumulatif total de tous les objets d'entité dans la liste


Comme mentionné précédemment, je cherche une alternative à itération à travers les objets et à percer à chaque propriété, comme mentionné également par Jan


Vous voulez donc inclure tous les éléments de la liste et vous allez supposer que rien d'autre n'a de référence? Il n'y a vraiment aucun moyen d'obtenir cette information que j'ai peur.



8
votes

Ceci peut être une réponse punky pleine de chevaux, mais je vais sortir sur un membre et dire si vous faites des comparaisons statistiques, faites une série binaire de l'objet à un Morthstream et ensuite regarder sa propriété comme tel: xxx

Prenez note que cela pourrait changer entre différentes versions du cadre et ne serait utile que pour Comparaisons entre les graphiques d'objet dans un seul programme.


1 commentaires

Ne doit pas oublier d'utiliser [sérialisable] pour des objets fortement dactylographiés