|
|||||||||||||||||||
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | | | | |||||||||||||||||||
|
Effective Java
|
||||||||||||||||||
Neue und alte JDK-ToolsErgänzungen zu jcmd
Seit Java 8 gibt es das Diagnose-Tool
jcmd
,
mit dem man Informationen über eine laufende JVM bekommen kann. Es befindet
sich wie alle Diagnose-Werkzeuge im
bin
-Directory
des JDK. Viele der Diagnose-Kommandos, die es schon früher im JDK gab,
sind nun unter
jcmd
zusammengefasst.
Zum Beispiel kann man für das Auflisten aller JVMs seit Java 8 das Kommando
jcmd
anstelle
von
jps
verwenden. Oder man kann seit
Java 8 einen Heapdump ziehen mit
jcmd <pid> GC.heap_dump
<file
>
anstelle von
jmap -dump:live,format=b,file=<file>
<pid>
wie man es traditionell gemacht hat.
Mit Java 9 sind weitere Optionen für jcmd dazu gekommen (siehe / JCMD /), unter anderem das oben schon erwähnte VM.log für die Steuerung des JVM-Loggings. Ein anderes Beispiel ist das Abfragen von Informationen über den Heap (mit GC.heap_info ) oder die Finalizer-Queue (mit GC.finalizer_info ). Man kann z.B. in Java 9 sagen: jcmd <pid> GC.finalizerinfo anstelle von jmap -finalizerinfo <pid>
wie man es noch in Java 8 gemacht hätte.
Neu in Java 9 sind auch Optionen für den
JIT-Compiler (
Compiler.directives_add
,
Compiler.queue
,
…), die Möglichkeit, JVM-Flags zu setzen (mit
VM.set_flag
),
und einiges mehr. Die komplette Liste aller Optionen für
jcmd
bekommt man über
jcmd <pid> help
.
Neue Toolsjdeprscan
Da in Zukunft solche Features wegfallen
sollen, die heute bereits als "deprecated" gekennzeichnet sind, gibt es
ein neues Tool
jdeprscan
, mit dem nach
der Verwendung von deprecated API-Elementen gesucht werden kann.
jshell
Das
jshell
-Werkzeug
(siehe /
REPL
/)
ist ein interaktives Comand-Line-Tool, mit dem man Java-Ausdrücke und
-Anweisungen evaluieren kann. Es hat einen Code-Modus, in dem man Java-Code
eintippen und sofort ausführen kann. Zusätzlich gibt es einen Kommando-Modus,
in dem man sich z.B. alle Variablen und Methoden anschauen kann, die man
explizit oder implizit angelegt hat. Man kann den Source-Code auch abspeichern
und aufheben oder vorhandenen Source-Code einlesen. Es hat Auto-Completion
und vieles mehr. Zum Lernen der Sprache oder auch zum Ausprobieren von
neuen Features ist das
jshell
-Werkzeug
recht nützlich. Es gibt dazu ein Konferenz-Video von Robert Field, der
das
jshell
-Werkzeug für Java 9 implementiert
hat (siehe /
DVXX
/).
Verschwundene Toolsjvisualvm
Das Monitoring-Tool
jvisualvm
ist nicht mehr Bestandteil des JDK 9. Viele Entwickler haben es wegen
seiner zahlreichen Plugins als Profiler und JVM-Monitor verwendet.
jvisualvm
lebt als Open Source Project weiter und man kann es von /
VSVM
/
herunterladen.
hprof
Der
hprof
-Agent
wird nicht mehr ausgeliefert (siehe /
HPRF
/).
Er wurde in Java 5 mit der Einführung der JVMTI-Schnittstelle als "proof
of concept" implementiert und war nie als offizielles Werkzeug konzipiert.
Mittlerweile gibt es andere Tools für das Heap-Profiling, die seine Funktionalität
ersetzen. Das
hprof
-Format, in dem
Heap Dumps dargestellt werden, wird es allerdings weiterhin unverändert
geben. In Java 9 werden Heap Dumps nun mit
jcmd
<pid> GC.heap_dump
oder
jmap
-dump
erzeugt.
jhat
Das
jhat
-Tool
ist ein Browser für Heap Dumps im
hprof
-Format,
den es seit langer Zeit im JDK gibt. Mittlerweile gibt es unzählige
Werkzeuge, mit denen Heap Dumps analysiert werden können, und deshalb
gibt es das vergleichsweise rudimentäre
jhat
-Tool
im JDK 9 nicht mehr. Eine beliebte Alternative ist das Memory Analyzer
Tool MAT (siehe /
MAT
/);
aber auch jeder beliebige Java-Profiler kann Heap Dumps analysieren.
|
|||||||||||||||||||
© Copyright 1995-2018 by Angelika Langer. All Rights Reserved. URL: < http://www.AngelikaLanger.com/Articles/EffectiveJava/91.Java9.What-is-new-in-Java-9/90.java-9.1.overview.ready_5.html> last update: 26 Oct 2018 |