私はいくつかのルーチンをベンチマークするためにJava Measurement Harness(JMH)を使用しています。私は各実行の最大ヒープサイズを取得することに興味があります。 JMHのGCプロファイラは割り当て率や解約率などの情報を私に提供しますが、テスト実行中に取得された最大のヒープを探しています。これはできますか?JMHベンチマークのmaxmiumヒープサイズを報告してください
public class MaxMemoryProfiler implements InternalProfiler {
@Override
public String getDescription() {
return "Max memory heap profiler";
}
@Override
public void beforeIteration(BenchmarkParams benchmarkParams, IterationParams iterationParams) {
}
@Override
public Collection<? extends Result> afterIteration(BenchmarkParams benchmarkParams, IterationParams iterationParams,
IterationResult result) {
long totalHeap = Runtime.getRuntime().totalMemory(); // Here the value
// you want to
// collect
Collection<ScalarResult> results = new ArrayList<>();
results.add(new ScalarResult("Max memory heap", totalHeap, "bytes", AggregationPolicy.MAX));
return results;
}
}
そして、あなたのOptionsBuilderにそれを追加します:
あなたは方法の単一の実行時に占有ヒープを知りたいのですか?またはベンチマーク全体ですか? – Eugene
シングル@Benchmarkメソッド – ahoffer
を実行すると、それは私の言うことです... '@ベンチマーク 'が*多くの*回呼び出されます。 '@ Benchmark'の*メソッド全体(*すべての呼び出し)を1回だけ呼び出せますか? – Eugene