230 votes

Quelle est la consommation de mémoire d'un objet en Java ?

L'espace mémoire consommé par un objet avec 100 attributs est-il le même que celui de 100 objets, avec un attribut chacun ?

Quelle quantité de mémoire est allouée à un objet ?
Combien d'espace supplémentaire est utilisé lors de l'ajout d'un attribut ?

3voto

Matt Passell Points 1247

J'ai obtenu de très bons résultats avec les java.lang.instrument.Instrumentation approche mentionnée dans une autre réponse. Pour de bons exemples de son utilisation, voir l'entrée, Compteur de mémoire d'instrumentation de la lettre d'information des spécialistes de la Java et de la java.sizeOf sur SourceForge.

3voto

Neil Coffey Points 13408

Au cas où cela pourrait être utile à quelqu'un, vous pouvez télécharger sur mon site web une petite Agent Java pour interroger l'utilisation de la mémoire d'un objet . Il vous permettra également d'interroger l'utilisation "profonde" de la mémoire.

0 votes

Cela a bien fonctionné pour obtenir une estimation approximative de la quantité de mémoire d'une entreprise. (String, Integer) Utilisation du cache de Guava, par élément. Merci !

1voto

Burkhard Points 6734

Non, 100 petits objets ont besoin de plus d'informations (mémoire) qu'un grand.

0voto

kohlerm Points 1672

Les règles relatives à la quantité de mémoire consommée dépendent de l'implémentation de la JVM et de l'architecture du processeur (32 bits ou 64 bits, par exemple).

Pour les règles détaillées concernant la JVM de SUN, vérifiez les points suivants mon ancien blog

Regards, Markus

0 votes

Je suis presque sûr que Sun Java 1.6 64bit, a besoin de 12 octets pour un objet simple + 4 de remplissage = 16 ; un objet + un champ entier = 12 + 4 = 16.

0 votes

Avez-vous fermé votre blog ?

0 votes

Pas vraiment, je ne suis pas sûr que les blogs SAP aient été déplacés. La plupart d'entre eux peuvent être trouvés ici kohlerm.blogspot.com

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X