Ich versuche, einen Weg zu finden, um den Inhalt der größten String
und char[]
im Java-Heap, mit einigen Java-Tool dafür zurückgeben. Ich verwende Java 6.Befehl, um den Inhalt der größten Strings und Char-Arrays auf Java 6 anzuzeigen. Wie?
Ich arbeite in einer Anwendung mit einigen Speicherproblemen. Der größte Teil des Problems stammt von den String- und Char-Arrays, die für die von JPA Hibernate (Version 3.3.0) generierten Abfragen erstellt wurden.
I jmap
Tool können die Hoch zeigen verbrauchen Arbeitsspeicher:
jmap -histo:live <PID_OF_JAVA_PROCESS> | head -n 20
Und Druck etwas wie das (die erste ist char[]
):
num #instances #bytes class name
----------------------------------------------
1: 3286152 1412140072 [C
2: 10198187 239513896 [Ljava.lang.String;
3: 3937983 126015456 java.lang.String
4: 662242 47550936 [[Ljava.lang.String;
ich den Inhalt sehen kann die internen Char-Arrays und Strings mit Eclipse Memory Analyzer nacheinander. Aber das ist nicht produktiv.
Ich möchte diese Informationen einfacher haben, mit einigen Java-Tool, um alle Informationen über diese Strings und Char-Arrays zu erhalten und in einer Textdatei gespeichert.
Mit diesen Informationen kann ich das ganze Szenario sehen und die Abfragen priorisieren, die problematischer sind.
Danke!
Hallo! Danke für die Antwort. Ich kann mit JvisualVM keinen Weg finden, den ganzen "Wert" des Char-Arrays zu kopieren. Ich kann jedes Zeichen einzeln nur auf Array oder dem Anfang der ganzen Information sehen (der Rest erscheint als ''). Und ich finde keine Möglichkeit, mit JvisualVM den Inhalt aller char-Arrays und Strings zu kopieren. –
Dherik