2016-03-31 24 views

Antwort

3

Wenn Sie VisualVM verwenden, können Sie einige OQL Abfrage verwenden, um die Daten in Java-Heap, die Sie suchen, zu lesen. Ein Befehl, der Ihren Bedarf anpassen kann, ist:

select {instance: s, content: s.toString()} from java.lang.String s 
    where /java/(s.toString()) 

Sie viel mehr finden Sie hier: https://visualvm.java.net/oqlhelp.html

+0

Das sieht nützlich aus! Kann ich eine dümmer Frage stellen, wo führe ich diese Abfrage aus? Gibt es eine Konsole in JVisualVm oder so? –

+0

@OneTwoThree: Es gibt sowohl Befehlszeilen- als auch visuelle Werkzeuge, Sie können die vollständige Dokumentation auf ihrer Website sehen. Es ist ein sehr nützliches Werkzeug – Pooya

0

ich simuliert dies mit einer kleinen Feder Boot-Anwendung und Eclipse Memory Analyzer. Der Heap-Dump wurde in MAT erstellt, aber Sie können auch den bereits erstellten Heap-Dump öffnen.

Wenn Sie die Heapdump MAT automatisch öffnen zeigt Ihnen den Verdacht hegt, die viel Speicher verwenden:

enter image description here

Wenn Sie die Details öffnen können Sie die String Instanzen und ihre Werte sehen (gelb markiert in meinem Screenshot) in dem Accumulated Objects in Dominator Tree

enter image description here

Kurzinformation genannt Abschnitt: Sie OQL aus MAT laufen:

enter image description here