PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : jvm parameter auslesen



Huhn Hur Tu
18.12.15, 10:00
Hi,

ich muss aus einer laufenden JVM mit den im seit Java 5 SDK verfuegbaren Werkzeugen (jmap / jstat) folgende Parameter auslesen

- Max HeapSpace (kein Problem, das bekomme ich auch so hin)
- commited Heap Space
- used HeapSpace

jstat und jmap liefern viele Daten, bei denen es mir an der Interpretation mangelt, hat hier jemand eine Idee?

- http://www.cs.lafayette.edu/docs/java/tooldocs/share/jstat.html

Gruss Stefan

Bitte kein jconsole, Server hat keine GUI und ich will keinen remote Aufruf machen

marce
18.12.15, 10:18
wenn ich's richtig im Kopf habe dürfte
-gccapacity das sein, was Du suchst - und dann halt noch ein paar Ergebnisse (Summe über currents, Summe über Max, ...) aufsummieren (ich hab gerade kein 1.5er am laufen zum probieren).

Schau Dir ggf. mal z.B. das java-munin-Plugin an, wie die es lösen. Die greifen auch auf die entsprechende Schnittstelle zu AFAIK.

Huhn Hur Tu
22.12.15, 12:14
1.5 hat das auch, ich habe nur gerade das Problem mit der Zuordnung der Werte, welche summiere ich fuer commited, welche fuer used und welcher fuer max

marce
22.12.15, 12:22
Der Heap-Space besteht ja aus allen dort genannten - also PermGen, NewGen, OldGen, Eden - wie sich was zusammensetzt bzw. was davon in welchem enthalten ist (AFAIK relevant für NewGen, OldGen und EDEN) welchselt je nach verwendeter Java-Version, wobei der grundlegenste Wechsel mit der 8er-Generation kam.

Huhn Hur Tu
23.12.15, 07:08
Ich habe folgende Spaces java 5-8

[CODE]
current_spaces='NGC S0C S1C EC OGC OC PGC CCSC'
maximum_spaces='NGCMX OGCMX PGCMX MCMX CCSMX'
unknown_params='NGCMN YGC FGC'
[CODE]

Das heisst ich kann nun ueber alle currents "$C" eine Summe bilden und ueber alle max "$X"
Wenn ich das aktuell mache scheitert es noch am Vergleich zum konfigurierten heap "-Xmx"

marce
23.12.15, 07:14
naja, der konfigurierte -Xmx-Wert heißt ja nicht, daß der jemals erreicht wird in irgendwelche Max- oder Summen-Werten der laufenden Applikation. Da spuckt Dir schon der jeweils verwendete Garbage-Collector in die Suppe.

Die Speicherverwaltung unter Java ist eh eine eher mysthisch-spirituelle Geschichte. Es ist nicht mal so 100% sicher, daß die JVM sich "nach außen hin" an die Werte hält, die Du vorgegeben hast bzw. daß das von außen sichtbare Speichernutzungsverhalten (z.B. via top) irgendwas mit dem internen zu tun hat.

Mal anders gefragt: Was willst Du denn konkret erreichen, indem Du die Werte abfragst?

Huhn Hur Tu
23.12.15, 07:24
ok,

zum Vergleich zu den Daten aus einem anderen Werkzeug habe ich fuer nun folgendes fuer den
- max_heap = NGCMX + OGCMX'

Das ist was ich ueber ein anderes Werkzeug erhalten


jvm_heapspace_slot1
max:4194304
current:311680
used:269591


jvm_permspace_slot1
max:524288
current:524288
used:115059


Das sind die Daten die ich per jstat erhalte


NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
85760 1398080 18560 960 704 16640 171648 2796224 297920 297920 524288 524288 524288 524288 240535 337

Huhn Hur Tu
23.12.15, 07:36
jmap liefert auch feine Daten, faellt im Moment noch aus, das zwingen noch 1.5 Java verwendet wird, was jmap nicht mitliefert

Huhn Hur Tu
23.12.15, 08:13
Die Spaces sind von java5-7 identisch, deswegen komme ich jetzt zu folgendem Ergebniss

jstat -gccapacity
- max_heap = NGCMX + OGCMX'

jstat -gc
- current_heap = 'S0C S1C EC OC'
- used_heap = 'S0U S1U EU OU'

perm space seperat