当前位置: 首页 > 知识库问答 >
问题:

jmh GC探查器结果的值

康泽宇
2023-03-14

为了避免JVM上大多数众所周知的基准测试陷阱,我使用了jmh(java微基准测试工具)。此外,我确实知道垃圾回收机制会扭曲基准测试结果。

现在我想知道用< code>-prof gc的jmh的结果有多有表现力。jmh是否采取特殊措施使结果有意义?

我脑海中的其他问题是:

  • 如果在测量期间没有进行垃圾收集,该怎么办
  • 如果分析gc,jmh会强制垃圾收集吗
  • 在单独的JVM/java进程中运行的每个基准对gc评测有什么影响

共有1个答案

惠文彬
2023-03-14

此外,我确实理解垃圾收集会扭曲基准测试结果。

它不会真正扭曲结果。如果代码创建了垃圾,那么GC循环是算法带来的性能成本的一部分。你只是以分期付款的方式支付,而不是每次调用。当然,这取决于基准测试编写者,以确保迭代和预热计数设置得足够大,以便您获得有意义的样本,因此,如果您还希望测量GC的影响,您需要运行基准测试足够长的时间,使GC人体工程学达到稳定状态。

当然,微观基准测试就是这样,它不是整个应用程序的基准测试。而且,由于GC成本通常取决于分配率(例如,实时集大小是另一个因素),因此应谨慎解释这些结果。

 类似资料:
  • 问题内容: 我有一个脚本(据称)正在使用约5GB的RAM: 是否有一个内存分析器可以使我对占用大部分内存的对象有一些了解? 我已经尝试过,但是正在给我这个: 由于某种原因,它仅占5GB的12MB(阵列肯定会占用大部分内存)。 关于我可能做错了什么或应该尝试使用其他工具的任何建议(本线程中已经提到的那些除外)? 问题答案: Numpy(及其库绑定,一分钟内会详细介绍)使用C malloc分配空间,这

  • 问题内容: 有时我必须对Java代码进行一些性能分析工作,并且我想知道为什么我应该让老板在商业分析器中进行调查,而不是仅在Netbeans或JConsole中使用它? 可以保证投资的杀手级功能是什么? 问题答案: 我有使用NetBeans Profiler和JProbe的经验。对于性能分析,我发现Netbeans很有用,但JProbe优于内存分析。 JProbe具有用于比较堆快照和查找内存泄漏的根

  • 我刚开始使用graphql,我想在我的API中改进一些特性,其中之一是得到一个更好的过滤器。这个API应该返回一些基于配料的食谱,用户将在相应的应用程序中通知,这是我使用的解析器: null

  • 要运行查询,在工具栏中点击 运行 。如果查询语句是正确的,该查询将被运行,如果该查询应该返回数据,结果 选项卡会打开查询返回的数据。如果运行查询时发生错误,运行停止,显示相应的错误信息。 结果 选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格查看 和 表单查看。详细信息请看表查看 器。 提示:Navicat 支持返回 10 个结果集。 注意:你可以通过选择 查看 -> 显示结果 -

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器和数据库。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用三种模式显示:网格视图、树视图和 JSON 视图。详细信息请参阅数据查看器。 【注意】Navi

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器、数据库和/或模式。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格视图和表单视图。详细信息请参阅数据查看器。 【注意】Navicat