Je travaille sur le calcul de la taille [mémoire utilisée] d'un objet java [hashmap]. Il contient des éléments de types de données différents [lors de l'exécution] donc [no-of-elem * size-of-element] n'est pas une bonne approche. Le code le fait maintenant par série deCalcul de la taille de l'octet de l'objet Java
if (x)
do something
else if (primitives)
lookup size and calculate
Cependant, ce processus est un CPU hog et inefficace.
Je pense à la suite 2 approches à la place:
- sérialiser l'objet d'un tampon et obtenir la taille.
- Regardez dans java.lang.instrument pour obtenir la taille
Je cherche anyones expérience avec ces approches pour la performance, l'efficacité, l'échelle etc ou si vous connaissez quelque façon meilleure.
P.S: Ceci est un utilitaire de fond que je construis donc la taille ne doit pas être super précise, mais il devrait être sur la bonne. Je suis donc prêt à échanger la précision des performances
Je ne suis pas intéressé par la profondeur de taille [la taille des objets qui sont refered par cet objet ne sera pas calculé.]
Je cherche une comparaison des performances et comprendre comment getObjectSize() fonctionne ..so en interne que je ne messup quelque chose d'autre pour améliorer les performances
Merci
Qu'est-ce que * exactement * voulez-vous dire par taille? Quantité de mémoire occupée? Nombre d'éléments contenus? –
par taille, je veux dire la quantité de mémoire prise .. édition pour refléter cela – codeObserver
Question plus ou moins identique: http://stackoverflow.com/questions/757300/programatically-calculate-memory-occupied-by-a-java- object-including-objects-it-r – andersoj