Schwankung "Total Memory"?

Status
Nicht offen für weitere Antworten.

Zender

Mitglied
Hallo Leute,

ich bin momentan auf der Suche nach einem Memory-Leak in meinem Java-Code. Um während des Programmablaufs ein paar Speicherinformationen zu bekommen nutze ich totalMemory und freeMemory:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#totalMemory()

Was mich jetzt verwundert, ist der Umstand, dass der totalMemory-Wert sich während der Programmausführung teilweise ändert, manchmal bis zu ca 60MB.
Ich starte java mit "-Xms800m -Xmx800m"

Hat jemand eine Idee wodurch diese Schwankung begründet sein könnte?

btw: In Java gibts keine Möglichkeit, die aktuelle Größe eines beliebigen Objektes auszulesen oder?

Gruß, Zender
 

Wildcard

Top Contributor
Die Größe eines Objekts ist ein schwer zu fassender Begriff. Rechnest du nur die Größen der Referenzen dazu? Was ist mit static Teilen? Wie sieht es mit Strings aus, bei denen Resourcen über mehere Objekte verteilt sind?
Die verwendete Metrik ist entscheidend und die einzig wahre Metrik gibt es nicht.
Wenn du ein Memory Leak vermutest verwende einen Profiler und zieh dir einen Heap Dump
 

Zender

Mitglied
Wildcard hat gesagt.:
Die Größe eines Objekts ist ein schwer zu fassender Begriff. Rechnest du nur die Größen der Referenzen dazu? Was ist mit static Teilen? Wie sieht es mit Strings aus, bei denen Resourcen über mehere Objekte verteilt sind?
Die verwendete Metrik ist entscheidend und die einzig wahre Metrik gibt es nicht.
Wenn du ein Memory Leak vermutest verwende einen Profiler und zieh dir einen Heap Dump

Ja ich sehe die Problematik beim Auslesen der Objektgröße, war auch nur eine beiläufige Frage. Hätte ja sein können, dass man sich die Größe aller vom Objekt beanspruchten Ressourcen (ohne Beachtung von Überschneidungen) anschauen kann.

Einen Profiler kann ich leider nicht verwenden, weil der Dump gigantisch groß werden würde, da das Programm erst nach langer Laufzeit diese Memory-Leaks zeigt und die ganze Zeit sehr viele Operationen durchführt.
 

Wildcard

Top Contributor
Ach so, das war eine rein akademische Frage?
Dann sei dir vielleicht diese Lektüre ans Herz gelegt: http://java.sun.com/docs/hotspot/gc1.4.2/#3.%20Sizing%20the%20Generations|outline
 

Zender

Mitglied
Wildcard hat gesagt.:
Ach so, das war eine rein akademische Frage?
Dann sei dir vielleicht diese Lektüre ans Herz gelegt: http://java.sun.com/docs/hotspot/gc1.4.2/#3.%20Sizing%20the%20Generations|outline

Ok, danke für den Link.
Nur habe ich ja Xmx=Xmx gesetzt, von daher sollten diese Sizing-Mechanismen gar nicht einsetzen, oder vesteh ich die Aussage falsch?

Setting -Xms and -Xmx to the same value increases predictability by removing the most important sizing decision from the virtual machine. On the other hand, the virtual machine can't compensate if you make a poor choice.
 

Wildcard

Top Contributor
Xmx setzt nur den Heap. Fehlen noch Perm Generation, Stack,... all das zusammen macht aber total Memory aus.
 

Zender

Mitglied
Wildcard hat gesagt.:
Xmx setzt nur den Heap. Fehlen noch Perm Generation, Stack,... all das zusammen macht aber total Memory aus.

Hm, ich habe mir das ganze jetzt noch einmal genauer angesehen, kann aber scheinbar nicht die richtigen Schlüsse aus http://java.sun.com/docs/hotspot/gc1.4.2/#3.%20Sizing%20the%20Generations|outline ziehen.
Ist der Speicher, der auf dem Schaubild mit "Total size" markiert ist äquivalent zu http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#totalMemory() ?

Was kann es für praktische Gründe haben, dass der totalMemory ansteigt? Wie kann ich mir das vorstellen?

Danke für eure Hilfe,
Zender
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
medic NullPointer verwirrt mich total. Allgemeine Java-Themen 3
T Thumbnails erstellt: Total schlechte Qualität: Allgemeine Java-Themen 2
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
E Java Shared Memory? Allgemeine Java-Themen 6
B Java Sound Memory Overload Allgemeine Java-Themen 0
P Memory Editing mit JNA, tutorial? Allgemeine Java-Themen 3
Q Memory-Leak in BlockingQueue Allgemeine Java-Themen 3
E Zweidimensionales Array Integer[10 000][10 000] -> out of memory? Allgemeine Java-Themen 4
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
T Java Memory Puzzle Allgemeine Java-Themen 6
H jni memory problem Allgemeine Java-Themen 8
S Memory Leak!!! Allgemeine Java-Themen 7
dayaftereh JVM Memory Usage Allgemeine Java-Themen 5
L Methode "Neues Spiel" für Memory Allgemeine Java-Themen 2
L Brauche Hilfe bei Memory Programmierung Allgemeine Java-Themen 2
H Tomcat VM out of memory Allgemeine Java-Themen 7
M File im memory erzeugen Allgemeine Java-Themen 5
F Frage zu Memory Leak, Garbage Collection und Profiler-Tools Allgemeine Java-Themen 6
P Java Memory Leaks Allgemeine Java-Themen 12
J Out Of Memory - Speicher vergrößern? Allgemeine Java-Themen 2
C ArrayList Out of Memory Allgemeine Java-Themen 28
P out of memory -> heap wächst und wächst Allgemeine Java-Themen 7
J RAM freimachen mit KOmprimiertem in-memory-swap Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben