1.6.4 Javaprozess-Monitoring mit jconsole, jinfo, jps

Monitoring mit jconsole

 jconsole ist eine grafische Javaanwendung die es erlaubt die Konfiguration eines Javapozess' zur Laufzeit zu beobachten. Einige der Eigenschaften die beobachtet werden können sind:

  • Speicherverbrauch
  • Parameter mit denen die VM konfiguriert ist
  • genauer Typ der VM
  • CPU-Verbrauch
  • Anzahl der Threads
  • Anzahl geladene Klassen
  • ...

Die Verwendung von jconsole geschieht wie folgt:

1. Starten eines Javaprogramm

Starten eines (länger) laufenden Javaprogramm

Starten des Programm DemoFrame

java DemoFrame

2. Bestimmen der Pozess-Id des laufenden Javaprogramms

Jeder Prozess des Betriebssystems hat eine eindeutige Nummer den "Process Identifier". Das Kommando jps listet unabhängig vom Betriebssystem alle Javaprozesse.

jps
254 
16964 Jps
16959 DemoFrame

3. Starten von jconsole

jconsole 16959

Wichtig: Das Javaprogramm darf zum Zeitpunkt an dem jps und jconsole aufgerufen werden noch nicht beendet sein!

Laufende jconsole Anwendung:

 

Monitoring mit jinfo

jinfo liest ebenfalls die wichtigsten Kenndaten eines laufenden Prozesses aus und gibt sie auf der der Konsole aus.

Das erfassen der ProzessId geschieht auch mit dem Hilfsprogramm jps:

1. Starten des Javaprogramms

Starten (länger) laufenden Javaprogramm

Starten des Programm DemoFrame

java DemoFrame

2. Bestimmen der Pozess-Id des laufenden Javaprogramms

Pegasus:bin sschneid$ jconsole 16959
Pegasus:bin sschneid$ jps
254 
17168 Jps
17166 DemoFrame

3. Starten von jinfo

Pegasus:bin sschneid$ jinfo 17166
Attaching to process ID 17166, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 16.3-b01-279
Java System Properties:

java.runtime.name = Java(TM) SE Runtime Environment
sun.boot.library.path = /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Libraries
java.vm.version = 16.3-b01-279
awt.nativeDoubleBuffering = true
gopherProxySet = false
mrj.build = 10M3065
java.vm.vendor = Apple Inc.
java.vendor.url = http://www.apple.com/
path.separator = :
java.vm.name = Java HotSpot(TM) Client VM
file.encoding.pkg = sun.io
sun.java.launcher = SUN_STANDARD
user.country = DE
sun.os.patch.level = unknown
java.vm.specification.name = Java Virtual Machine Specification
user.dir = /Users/sschneid/Documents/JavaKurs/beispiele/l1/HelloWorld
java.runtime.version = 1.6.0_20-b02-279-10M3065
java.awt.graphicsenv = apple.awt.CGraphicsEnvironment
java.endorsed.dirs = /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/endorsed
os.arch = i386
apple.awt.graphics.UseOpenGL = false
java.io.tmpdir = /var/folders/UO/UOnPVFsvGEO5k3UJnjadeE+++TI/-Tmp-/
line.separator = 

java.vm.specification.vendor = Sun Microsystems Inc.
os.name = Mac OS X
sun.jnu.encoding = MacRoman
java.library.path = .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
java.specification.name = Java Platform API Specification
java.class.version = 50.0
sun.management.compiler = HotSpot Client Compiler
os.version = 10.6.4
http.nonProxyHosts = local|*.local|169.254/16|*.169.254/16
user.home = /Users/sschneid
user.timezone = 
java.awt.printerjob = apple.awt.CPrinterJob
file.encoding = MacRoman
java.specification.version = 1.6
java.class.path = .
user.name = sschneid
apple.awt.graphics.UseQuartz = false
java.vm.specification.version = 1.0
java.home = /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
sun.arch.data.model = 32
user.language = de
java.specification.vendor = Sun Microsystems Inc.
awt.toolkit = apple.awt.CToolkit
java.vm.info = mixed mode
java.version = 1.6.0_20
java.ext.dirs = /Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/ext
sun.boot.class.path = /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/jsfd.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/charsets.jar
java.vendor = Apple Inc.
file.separator = /
java.vendor.url.bug = http://bugreport.apple.com/
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
mrj.version = 1060.1.6.0_20-279
socksNonProxyHosts = local|*.local|169.254/16|*.169.254/16
ftp.nonProxyHosts = local|*.local|169.254/16|*.169.254/16
sun.awt.exception.handler = apple.awt.CToolkit$EventQueueExceptionHandler
sun.cpu.isalist = 

VM Flags: