# [Mustang] jps & jstat & jmap



## Thomas Darimont (21. Februar 2006)

Hallo!

Mit dem kleinen Tool jstat kann man sich mit einer belibiegen JVM Verbinden und dort verschiedene Laufzeitstatistiken abgreifen. Es lassen sich sowohl lokal als auch remote laufende JVM anzapfen 
Unteranderem lassen sich Informationen über:
-Geladene Klassen
-Kompilierte Klassen
-Garabge Collector
- ...

Mit jps lassen sich anzapfbare JVMs auf dem lokalen System auflisten.

```
C:\Programme\Java\jdk1.6.0\bin>jps
796 startup.jar
1512 startup.jar
760 Jps
```

jps und jstat gibts zwar auch schon in Java 5 aber jmap ist (zumindest für Windows JDKs) neu in Mustang.

Mit dem netten Tool jmap kann man sich gemeinsam genutzte Speicherelemente und Informationen über Objekte auf dem heap anzeigen lassen:
Die Ausgabe für einen Beispielaufruf für Eclipse 3.2.5 findet sich am Anhang.


```
C:\Programme\Java\jdk1.6.0\bin>jmap -histo 1512

num   #instances    #bytes  class name
--------------------------------------
  1:    266627    20753328  [C
  2:     43018    15374672  [I
  3:     94860    12520800  <constMethodKlass>
  4:     94860     8357984  <methodKlass>
  5:    153822     7006784  <symbolKlass>
  6:    259597     6230328  java.lang.String
  7:      9341     5607056  <constantPoolKlass>
  8:      9341     4092328  <instanceKlassKlass>
  9:      8064     3392160  <constantPoolCacheKlass>
 10:     10305     3315616  [B
 11:     97952     2350848  java.util.HashMap$Entry
 12:      4842     1574168  [Ljava.util.HashMap$Entry;
 13:     15685     1058520  [Ljava.lang.Object;
 14:     13105      999832  [S
 15:     38217      917208  org.eclipse.jdt.internal.core.ClassFile
 16:     10152      893376  java.lang.Class
 17:     21273      775472  [Ljava.lang.String;
 18:     14768      636440  [[I
....
```
Wie man sieht nehmen die beispielsweise von String verwendeten char[]  ( [C ) am meisten Platz weg. 

Gruß Tom


----------

