2013-09-27 19 views
9

sto giocando con la nuova Java Mission Control Profiler che sta arrivando con il Java 7u40 e non riesco a fare l'allocazione a profilo e raccogliere le statistiche degli oggetti. Non importa cosa faccio, non riesco a vedere nessuna statistica nella memoria ->Finestra Statistiche oggetto.Java Mission Control Mucchio Profilo

Il comando seguente avvia la raccolta:

jcmd <pid> JFR.start duration=60s settings=profile filename=alloc-prof.jfr 

Il Java Mission Control documentation non menziona alcun opzioni specifiche per l'oggetto di abilitazione profiling. Ho provato a creare il mio profilo e impostare:

<flag name="heap-statistics-enabled" label="Heap Statistics">true</flag> 
    <flag name="allocation-profiling-enabled" label="Allocation Profiling">true</flag> 

Ma ancora non vengono raccolte statistiche oggetto.

risposta

10

Utilizzare il gestore modelli disponibile in Controllo missione.

Passare a Windows -> Gestione modelli e importare il modello e controllare Statistiche di heap e profilo di allocazione, esportarlo. Fatto!

Se si desidera modificare manualmente il file jfc, può essere utile sapere che gli elementi all'interno dell'elemento di controllo non vengono letti dalla JVM, ovvero flag-element, Vengono utilizzati da JMC per modificare i parametri all'esterno del elemento di controllo (quello con l'attributo di controllo)

una modifica manuale richiede che si modifichi questi:

set java/object_alloc_in_new_TLAB ha permesso di vero

set java/object_alloc_outside_TLAB ha permesso di vero

set vm/gc/detailed/object_count abilitato su true

Nota, ci sono due eventi di conteggio oggetti, con object_count_after_gc si aumenteranno i tempi di GC. Se selezioni invece quello sopra, otterrai un GC aggiuntivo per ogni chunk di registrazione (che di solito è sufficiente)

+1

Grazie! Proverò prima l'opzione di esportazione. –

+0

@ kire-haglin Grazie per la risposta dettagliata, molto utile! C'è più documentazione su cosa fanno esattamente 'object_count' e' object_count_after_gc' e cosa significa 'everyChunk'? Ad esempio, entrambi causano un _additional_ GC e, in tal caso, perché? E cos'è un "pezzo di registrazione"? – Hbf

+1

È possibile pensare a un chunk di registrazione come un file di registro. Con _period = "everyChunk" _ l'evento viene scritto quando il "file di registro" viene ruotato. Ciò garantisce di avere almeno uno di questi eventi per file di registrazione (costituito da uno o più blocchi di registrazione). Solo _object_count_ aggiunge un GC aggiuntivo. –