FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Größe von Java-Objekten im Speicher bestimmen

Größe von Java-Objekten im Speicher bestimmen 2006-03-22 10:08
Anonymer User
Hallo,
ich habe ein Problem:
Ich schreibe grad an einer Applikation, die viele Einträge aus einer DB holen muss. Damit das nicht ständiug geschieht, möchte ich gerne einen Cache einbauen, der einiege Daten zwichenspeichert. Allerdings würde ich beim Testen gern sehen, wie groß dieser Cache wird bzw. wie viel Hauptspeicher er in Anspruch nimmt. Gibts da Möglichekiten in Java, das rauszubekommen oder gib es Tools dafür?

Bin dankbar für Antworten

Re: Größe von Java-Objekten im Speicher bestimmen 2006-03-22 10:49
Anonymer User
Gibts da Möglichekiten in Java, das rauszubekommen oder gib es Tools dafür?
Ich habe die Eclipse Test & Performance Tools Platform (TPTP) noch nicht benutzt, aber die könnte Dir helfen.

Bevor Du allerdings einen Cache schreibst, würde ich prüfen wo der sich tatsächlich lohnt und ob Du da bestehenden Mechanismen benutzen kannst.

LEIFer

Re: Größe von Java-Objekten im Speicher bestimmen 2006-03-22 13:21
Slater
per Hand ist es möglich die Speichergröße auszulesen

wenn man da vor und nach der Objekterzeugung misst
und weiß, was nebenbei sonst noch erzeugt wird/ was der Garbage Collector gerade macht,
dann kann man bis auf das Byte genau alles ausrechnen

http://www.java-forum.org/de/viewtopic.php?t=15415


Re: Größe von Java-Objekten im Speicher bestimmen 2006-03-22 14:30
Anonymer User
Danke, dann hab ich jedenfalls mal einen Anhaltspunkt…

Re: Größe von Java-Objekten im Speicher bestimmen 2006-03-22 17:11
Tzwoenn
Falls du das Verhalten einer Anwendung über einen längeren Zeitraum beobachten willst, kann ich dir JMX empfehlen:

Statt
java package.MyClasseinfach die VM mit nem MbeanServer wie etwa dem vom Sun starten
java -Dcom.sun.management.jmxremote package.MyClassund danach kannst du mit einem kleinen im JDK mitgelieferten Tool
jconsole.exeu.a. den Speicherverbrauch, Threadnutzung beobachten bzw. auch die Anwendung selbst steuern, wenn sie entsprechend dafür konstruiert wurde.