2016-03-29 26 views
5

Ho alcuni parametri JMH che sto cercando di analizzare. Voglio abilitare la registrazione GC per vedere quanti rifiuti vengono generati, ma non riesco a capire come passare gli argomenti JVM. So che JMH gestisce i benchmark in una JVM biforcuta, quindi non è immediatamente ovvio per me come farlo. Sto usando SBT.Passare argomenti JVM a JMH

+0

JMH passa gli argomenti passati. Puoi semplicemente aggiungerli alla riga di comando, –

risposta

7

Se leggo correttamente i documenti sbt-jmh, passa le opzioni dell'applicazione a JMH runner con jmh:run .... Quindi, avendo quella riga di comando JMH accetta --jvmArgs "...", proverei a fare jmh:run --jvmArgs "-XX:+PrintGCDetails". Oppure, come menziona @apangin, aggiungi @Fork(jvmArgsAppend = "-XX:+PrintGCDetails").

Ma per il tuo caso d'uso particolare - "guarda quanti rifiuti vengono generati" - potrebbe essere un'idea migliore usare un profiler GC in bundle, attivato con -prof gc. Vedere l'esempio allo JMHSample_35_Profilers.java#l71.

5

Uso @Fork annotazione:

@Benchmark 
@Fork(jvmArgsAppend = "-XX:+PrintGCDetails") 
public void someBenchmark() { 
    ... 
} 

Nota che gli argomenti JVM passati a JMH sono propagati ai benchmark biforcuta.