JVM strumenti di diagnostica

jcmd

Spesso, quando viene realizzata un’applicazione, sarebbe buona abitudine effettuare i necessari tests di performance ,  endurance e  stress, in modo da rilevare eventuali punti critici o di miglioramento prima che l’applicazione , come si dice in gergo, venga messa in produzione. Nel caso di un’applicazione Java, occorre poter interagire con la JVM. Esistono diversi tolls e/o utility, uno di questi è jcmd che viene utilizzato per invocare comandi di diagnostica alla JVM (qui il riferimento ufficiale). Per scoprire i comandi che possiamo eseguire è sufficiente procedere come segue :

jcmd <pid> help

The following commands are available:
VM.native_memory
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.run_finalization
GC.run
VM.uptime
VM.flags
VM.system_properties
VM.command_line
VM.version

In realtà, la disponibilità di un comando, piuttosto che un altro, dipende anche dalla JVM su cui operiamo (in questo caso si tratta di openjdk-1.8.0.77-0).

Un comando  molto utile è il seguente :

jcmd <pid> VM.system_properties

ci permette di visionare tutte le system properties dell’applicativo che gira nella jvm

jcmd <pid> GC.heap_dump /tmp/test.hprof

permette di generare il dump dello heap che possiamo dare in pasto ad eventuali tools di analisi.

Infine, un comando che, secondo me, vale la pena tenere presente è

jcmd <pid> GC.run

Questo ci permette di forzare una System.gc() all”interno della JVM ed è, quindi, utilissimo per verificare che la memoria venga effettivamente liberata a seguito di un full gc. Ovviamente, per procedere, con tale osservazione occorre abilitare la nostra JVM a stampare l’andamento del gc.log.  Questo si può banalemente attivare aggiungendo le seguenti options sulla linea di comando che istanzia la jvm :

-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log
JVM strumenti di diagnosticaultima modifica: 2018-04-19T10:02:30+02:00da maurizio.gargy

Lascia un commento

Se possiedi già una registrazione clicca su entra, oppure lascia un commento come anonimo (Il tuo indirizzo email non sarà pubblicato ma sarà visibile all'autore del blog).
I campi obbligatori sono contrassegnati *.