2016-06-20 33 views
8

Esistono strumenti in grado di scaricare Metaspace da un v8 hotspot Java8?Come scaricare Java8 Metaspace dump (non heap dump)

+3

In quale forma ti piacerebbe ottenere questo e per cosa? Si noti che i dati in Metaspace non sono oggetti Java. Probabilmente non sei interessato alle strutture interne di HotSpot, ma a qualcos'altro. – apangin

+0

Abbiamo un'applicazione che causa l'errore di Metaspace OOM con 1G di MaxMetaspaceSize e volevo sapere come vengono utilizzate le memorie Metaspace. – czh

risposta

9

Sembra che si verifichi una perdita di carico della classe.
Usa

  • jmap -clstats PID per scaricare le statistiche classe Loader;
  • jcmd PID GC.class_stats per stampare le informazioni dettagliate sull'utilizzo della memoria di ciascuna classe caricata. Quest'ultimo richiede -XX:+UnlockDiagnosticVMOptions.

Anche il dump dell'heap aiuta, poiché ogni classe nel Metaspace ha un'istanza java.lang.Class corrispondente nell'heap.

+0

Ciao apangin, grazie per il tuo consiglio. Sono stato in grado di scaricare l'intero heap usando il comando jmap -dump, tuttavia non riesco a eseguire il comando jhat per analizzare il file di dump. Il dump dell'heap è di circa 5 GB, e jhat ha funzionato 2 ore senza il completamento, è normale? – czh

+0

jhat eventualmente terminato con spazio heap errore OOM dopo l'esecuzione di circa 2 ore. – czh

+1

@czh [Eclipse Memory Analyzer] (http://www.eclipse.org/mat/) funziona bene anche con discariche di heap di grandi dimensioni. – apangin