我正在使用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