# Speicherverbrauch einer Java Klasse



## DarthShader (21. März 2007)

Hallo zusammen,

ich bin momentan in einem Projekt involviert, welches später auf verschiedenen Platformen, insbsondere einem XP embedded (das OS nur im flash speicher) laufen soll.

Da ist dort strenge Speicherlimitierungen gibt, bin ich natürlich am genauen Speicherverbrauch meines Java Programmes interessiert.

Speziell geht es um einzelne Klassen und die Frage, wieviel Speicher diese verbrauchen. Ich weiß, dass die Klassen sich je nach Benutzung / Instanzierung noch vergrößern, wenn die Daten gesetzt werden, mich interessiert die minimale Größe eines Objektes, wenn man es erstmalig aus einer Klasse instanziert.

Ich könnte natürlich in den Task Manager von Windows schauen, aber der Speichernagabe des Prozesses vertraue ich nicht ganz, es ist dort auch schwer zu erkennen, wieviel Speicher nun ein Objekt verbraucht.


Gibt es dazu vielleicht schicke Tools? Eine Möglichkeit von Java selbst? Oder muss ich etwa alle Member einer Klasse und deren Größen selbst zusammenrechnen (könnte schwierig werden, da die interessanten Klassen oft erben...).


Danke für Eure Hilfe!


----------



## Thomas Darimont (21. März 2007)

Hallo,

genau kann man den Speicherverbreich eines Objektes in Java nicht bestimmen... dies hängt immer von der verwendeten JVM Implementierung ab. Weiterhin kann man den Speicherverbrauch einer Java Anwendung auch nicht 100% Steuern. Man kann beispielsweise Heap und Non-Heap mit Min-Max beschränken, jedoch wird in der Regel trotzdem noch ein wenig mehr Speicher verwendet (für native Bibliotheken, native Ressourcen, etc.).

aber schau mal hier:
http://www.tutorials.de/forum/java/...lung-platformspezifischer-objektgroessen.html
http://www.tutorials.de/forum/java/241791-mustang-heap-analyse-unter-java-6-a.html
http://www.tutorials.de/forum/java/256304-swing-gui-fuer-jhat.html

Gruß Tom


----------



## DarthShader (21. März 2007)

Danke für die Hinweise, die Sachen werde ich mir einmal anschauen.


----------

