Java Virtual Machine (JVM) genera 3 artefatti critici utili per ottimizzare le prestazioni e risolvere i problemi di produzione. Questi manufatti sono:

  1. Registro della raccolta dei rifiuti (GC).
  2. Discarica di filo
  3. Discarica di cumuli

1. Registro della raccolta dei rifiuti

a) Che cos’è un registro GC?

Il registro GC contiene informazioni relative agli eventi di Garbage Collection. Indicherà quanti eventi GC sono stati eseguiti, che tipo di comando si tratta di questo comando di eventi GC (ad esempio GC Young o GC completo), per quanto tempo ciascun evento GC sospende l’applicazione, quanti oggetti sono stati recuperati da ciascun evento GC.

b) Che aspetto ha un registro GC?

Il file di registro della raccolta dei rifiuti di esempio può essere trovato qui.

c) Dove vengono utilizzati i log GC?

I registri della raccolta dati inutili vengono utilizzati per studiare il GC dell’applicazione e le prestazioni della memoria. Viene utilizzato per ottimizzare i tempi di pausa del GC, viene utilizzato per identificare la dimensione della memoria ottimale per l’applicazione, viene anche utilizzato per risolvere i problemi relativi alla memoria.

d) Come generare un registro GC?

È possibile generare registri di Garbage Collection passando i seguenti argomenti JVM:

Sulle versioni Java fino alla 8:

Su versione Java a partire da 9:

percorso-file: è il percorso in cui verrà scritto il file di registro di Garbage Collection.

e) Come capire un registro GC?

Il formato del registro della raccolta dei rifiuti varia a seconda del fornitore della JVM (Oracle, HP, IBM, Azul, ..), della versione Java (1.5, 5, 6, 7, 8, 9, 10, 11, 12,…), della spazzatura algoritmo di raccolta (seriale, parallelo, CMS, G1, Shenandoah, Z GC) e argomenti JVM passati. Pertanto non è disponibile un formato standardizzato. Tuttavia, ecco un tutorial video, che tenta di aiutarti a comprendere il formato del file di registro GC.

f) Quali strumenti vengono utilizzati per analizzare un registro GC?

Sono disponibili più strumenti di analisi del registro della raccolta dei rifiuti. Alcuni di quelli popolari sono riportati qui: GCeasy, IBM GC & Memory visualizer, HP JMeter, Google Garbage Cat

2. Discarica del filo

a) Che cos’è un dump di thread?

Un dump di thread è uno snapshot di tutti i thread in esecuzione nell’applicazione in un determinato momento. Contiene tutte le informazioni su ogni thread nell’applicazione, come lo stato del thread, l’ID del thread, l’ID nativo, il nome del thread, la traccia dello stack e la priorità.

b) Che aspetto ha un dump di thread?

Un esempio di thread dump può essere trovato qui.

c) Dove viene utilizzato un dump di thread?

I dump dei thread vengono utilizzati principalmente per la risoluzione dei problemi di produzione come picchi della CPU, mancata risposta nell’applicazione, tempi di risposta scadenti, thread sospesi, consumo elevato di memoria.

d) Come generare un dump di thread?

I dump dei thread possono essere acquisiti dall’applicazione in esecuzione utilizzando 8 diverse opzioni. L’opzione più comune per eseguire il dump del thread è utilizzare lo strumento ‘jstack’. jstack viene fornito nella cartella JDK_HOMEbin. Ecco il comando che devi eseguire per acquisire il dump del thread:

pid: è l’ID del processo dell’applicazione, il cui dump del thread deve essere acquisito

percorso-file: è il percorso del file in cui verrà scritto il dump del thread.

e) Come capire un dump di thread?

Ecco un video talk che offre una panoramica dettagliata su come comprendere i dump dei thread.

f) Quali strumenti vengono utilizzati per analizzare un dump di thread?

Ecco gli strumenti di analisi dei dump dei thread più utilizzati: fastThread, Samurai, IBM Thread & Monitor Analyzer, Visual VM

3. Discarica dell’heap

a) Che cos’è un dump di heap?

Un dump dell’heap è un’istantanea della memoria dell’applicazione in un determinato momento. Contiene informazioni come quali sono gli oggetti in memoria, quali valori portano, qual è la loro dimensione, a quali altri oggetti fanno riferimento.

b) Che aspetto ha un dump di heap?

Un esempio di dump dell’heap può essere trovato qui. (Nota: sarà in formato binario, quindi in realtà non puoi leggerlo).

c) Dove viene utilizzato un dump di heap?

I dump dell’heap vengono utilizzati principalmente per la risoluzione dei problemi relativi alla memoria, OutOfMemoryError.

d) Come generare un dump dell’heap?

Il dump dell’heap può essere acquisito dall’applicazione in esecuzione utilizzando 7 diverse opzioni. L’opzione più comune per eseguire il dump dell’heap è utilizzare lo strumento ‘jmap’. lo strumento jmap viene fornito nella cartella JDK_HOMEbin. Ecco il comando che devi emettere per acquisire:

pid: è l’ID del processo Java, il cui dump dell’heap deve essere acquisito

percorso-file: è il percorso del file in cui verrà scritto il dump dell’heap.

e) Come capire un dump di heap?

I file di dump dell’heap sono in formato binario e tendono ad essere di grandi dimensioni. Oltre a ciò, il loro formato è fortemente privo di documentazione. Pertanto, è necessario utilizzare gli strumenti di analisi del dump dell’heap (dati nella domanda successiva) per analizzarli e comprenderli.

f) Quali strumenti vengono utilizzati per analizzare un dump di heap?

Ecco gli strumenti di analisi dell’heap dump più utilizzati: Eclipse MAT, HeapHero, JVisualVM.
Ci auguriamo che questo articolo copra tutti i metodi per come analizzare i registri di raccolta rifiuti, i dump di thread e i dump di heap. Se hai trovato questo articolo davvero utile per te, condividi queste informazioni con i tuoi amici, parenti, familiari e altri. Ci vediamo nei prossimi post con signalfix.net!