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
5
A
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.
JMH passa gli argomenti passati. Puoi semplicemente aggiungerli alla riga di comando, –