我正在使用Java度量工具(JMH)来测试一些例程。我有兴趣获得每次运行的最大堆大小。 JMH的GC Profiler为我提供了分配率和流失率等信息,但我正在寻找测试运行期间获得的最大堆。这可以做到吗?报告JMH基准的最大堆大小
2
A
回答
0
您可以实现自己的探查:
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:
OptionsBuilder()
/* options ... */
.addProfiler(MaxMemoryProfiler.class);
随着AggregationPolicy.MAX
加入ScalarResult
的选项,输出将是每一个最大结果基准执行。
顺便说一句,如果你想要做的度量与记忆,一个不错的文章,你可以读的是https://cruftex.net/2017/03/28/The-6-Memory-Metrics-You-Should-Track-in-Your-Java-Benchmarks.html你想要的方法的单次运行期间知悉的被占领堆
+0
我的确写过我自己的分析器。我的分析器非常天真。它使用“totalMemory()”方法每隔几秒对堆大小进行一次采样。感谢您的文章链接! – ahoffer
相关问题
- 1. Nexus的最大堆大小?
- 2. PHP文件大小报告旧大小
- 3. 关于堆(最大堆和最小堆)
- 4. 水晶报告最大报告处理
- 5. 报告超过Sonar服务器的最大上传大小
- 6. 最小堆和最大堆之间切换基于标记
- 7. 达到的最大堆栈大小
- 8. Android上本机堆的最大大小?
- 9. -Xms:初始堆大小或最小堆大小?
- 10. Orientdb:警告消息你最大堆大小为3.54GB
- 11. 为JBoss指定最佳的最小和最大堆大小
- 12. Crystal报告字体大小
- 13. Gradle报告文件大小
- 14. 基于XX不考虑Java最大堆大小(Xmx):printFlagsFinal
- 15. 最大堆大小以上12GB
- 16. 预留Java JVM最大堆大小
- 17. 热点默认最大堆大小
- 18. 最大线程堆栈大小.NET?
- 19. 如何找到最大堆栈大小?
- 20. iphone os支持的最大堆大小和堆栈大小是多少?
- 21. 有没有最小的堆大小
- 22. 如果知道最大堆大小,如何计算最大对象大小?
- 23. java堆设置中的最大堆大小的限制
- 24. SQL Server:最大行大小警告
- 25. 准确的指数与最大/最小
- 26. AudioCache堆大小溢出问题请求大小:1053184,最大大小:1048576
- 27. 水晶报告中的页面大小
- 28. 制作SSRS报告的大小相等
- 29. uiimage报告无效的大小
- 30. 构建最小/最大二元堆
?还是整个基准? – Eugene
Single @Benchmark方法运行 – ahoffer
这就是我说的...... @ @ Benchmark'被调用*很多次。你想要一个方法调用还是* @ Benchmark'的整个*(所有调用)? – Eugene