Plaine question stupide. J'ai une collection qui contient des objets Java. Ces objets ne sont pas des instances de la même classe, mais ils implémentent la même interface et conceptuellement très "semblables", de sorte que leurs tailles devraient être assez similaires. J'ai besoin de comprendre approximativement combien d'espace cette collection consommera dans la mémoire. Quelle serait la méthode la plus facile (la meilleure) pour calculer cela? Je comprends que je peux prendre chaque classe java qui peut résider en collection, calculer leur taille (taille profonde, Réflexion, etc.), obtenir la moyenne, multiplier par N (taille de la collection) et obtenir la valeur finale.meilleure façon de mesurer l'empreinte des objets java en mémoire
Mais est-ce que cela peut être fait dans l'autre sens - en calculant la taille de la collection existante (sans plonger dans la réflexion, la taille des champs, etc.)? Je comprends que la sérialisation de la collection en flux octet et mesuring la taille de sortie ne fonctionnera pas parce que la sérialisation ne reflétera pas la disposition exacte de la mémoire de l'objet. Mais peut-être y a-t-il d'autres façons de le faire?
Notez que les différentes JVM ne peuvent pas utiliser la même taille pour un objet donné. –
Il est peu probable que la même machine virtuelle Java avec des références de taille différente utilise la même quantité de mémoire. –