Java VisualVM-Speicher - sampler, wie man die Größe einer bestimmten Klasse

Meiner Anwendung verbraucht viel mehr Speicher als ich denke, dass es wohl zu verwenden, und ich versuche zu verstehen, welche Klasse ist die Verwendung einer großen Menge an Speicher und vielleicht nicht loslassen.

Ich bin mit VisualVM und in der Erinnerung sampler kann ich sehen, dass die meisten der Speicher ausgegeben wird, auf Chars, Strings und Bytes, alle meine Klassen verwendet Strings, aber wie Sie wissen, die VisualVM zeigt ALLE Chars und Strings in das system (alle Chars sind identisch die Zeichenfolgen, die es schwierig macht, zu verstehen, wer hält Sie),
wie ich verstehe, die Größe der anderen Klassen halten, dass diese strings berechnet wird, ohne die Saiten.

Wie kann ich in diesem tool sehe, wer sind die "Echten" größte Klassen - diejenigen, die enthält alle diese strings? (vorzugsweise, wenn ich von diesen Klassen in die Saiten und nicht die andere Weise herum)
Ich habe versucht, die "Wurzel auf die nächste GC" in der heapDump aber es gibt über 4,000,000 Strings also die chance, mich zu finden, die "Problematik" ist sehr klein...

Dank!!!

  • Ich denke, man kann nicht ausdrücklich sagen, welche Klasse mit wie viel Speicher. Wenn Sie instanziieren ein Objekt der anderen Klasse in einer anderen Klasse, wie würden Sie es angehen? Auch meines Wissens können Sie nicht bekommen, eine Klasse basierend meomory-Auslastung.
InformationsquelleAutor aye | 2012-01-09
Schreibe einen Kommentar