Mi sono recentemente trovato a dover fare del profiling di prestazioni di un software Java SE. Tra le varie opzioni che avevo a disposizione per il profiling in ambito Java, ho scelto jVisualVM inizialmente perché già incluso nella JVM (a partire dalla versione 1.6, tutte le Sun Java JDK includono il profiler).

L’esperienza con jVisualVM è stata davvero ottima: il profiler è semplice, facile e completo. Partiamo dall’avvio, molto semplice: da linea di comando si lancia jvisualvm. Ma niente paura, apparirà subito la finestra di profiling, che vi permetterà di fare un attach ai processi Java attualmente attivi sul vostro sistema e che volete monitorare:

Finestra principale di VisualVM con l’elenco dei processi Java locali a cui collegarsi

Una volta selezionato il processo che vogliamo monitorare, passeremo al dettaglio e potremo visualizzare l’uso di CPU e heap, nonché il numero di thread allocati dal programma. Possiamo anche fare un sampling del processo, raccogliendo in tempo reale informazioni sull’utilizzo di CPU e heap:

Scheda Monitor di VisualVM con i grafici di CPU, heap, classi caricate e thread di un processo

In generale, jVisualVM è un ottimo profiler per programmi Java: presenta le informazioni in modo semplice e completo; grazie a queste informazioni sono riuscito a diagnosticare (e risolvere) i problemi di performance del programma che stavo analizzando. Non è da sottovalutare, inoltre, che jVisualVM è praticamente disponibile per tutte le piattaforme su cui gira la JVM.

Vi segnalo infine che è anche possibile integrare anche il profiler con Eclipse.