JMH中的分配率是什么意思?

8

我想要测量运行基准测试时所消耗的内存。我在网上发现可以使用 GC 分析器来进行测量。我已经尝试了,但我不理解结果,也看不到所消耗的内存量。能否有人解释一下结果?谢谢。

MyBenchmark.testMethod_width_2_attribute_text                                     ss   60        32.345 ±       1.759   ms/op
MyBenchmark.testMethod_width_2_attribute_text:·gc.alloc.rate                      ss   60        26.904 ±       0.217  MB/sec
MyBenchmark.testMethod_width_2_attribute_text:·gc.alloc.rate.norm                 ss   60  14999630.400 ±      12.578    B/op
MyBenchmark.testMethod_width_2_attribute_text:·gc.churn.PS_Eden_Space             ss   60        28.282 ±      15.342  MB/sec
MyBenchmark.testMethod_width_2_attribute_text:·gc.churn.PS_Eden_Space.norm        ss   60  15903402.667 ± 8631257.013    B/op
MyBenchmark.testMethod_width_2_attribute_text:·gc.churn.PS_Survivor_Space         ss   60         0.654 ±       0.754  MB/sec
MyBenchmark.testMethod_width_2_attribute_text:·gc.churn.PS_Survivor_Space.norm    ss   60    368914.667 ±  425374.152    B/op
MyBenchmark.testMethod_width_2_attribute_text:·gc.count                           ss   60        26.000                counts
MyBenchmark.testMethod_width_2_attribute_text:·gc.time                            ss   60       105.000                    ms
1个回答

3
在底层,jmh使用ThreadMXBean,因此这看起来像是一份报告,报告了每个操作分配的字节数以及每个GC空间(如Eden / Survivor)中的每个MB / sec。
.norm代表归一化。

一些问题:
  1. PS_Eden_Space中的PS代表什么?
  2. gc.count是什么?垃圾回收器被调用的次数吗?
  3. gc.time是什么?垃圾回收器在所有调用中所花费的总时间?
- Alfarhan Zahedi
关于前缀:“PS”代表“Parallel Scavenge”。这是您的垃圾收集器的名称,意味着您正在使用GC“-XX:+UseParallelGC”。如果您指定了“-XX:+UseParNewGC”JVM参数,那么前缀将变为“Par”,而使用“-XX:+UseG1GC”则为“G1”。 - undefined
counttime 是在 JMH 迭代期间执行的垃圾回收次数和 JVM 在这些垃圾回收上花费的总时间。它们实际上是 java.lang.management.GarbageCollectorMXBeangetCollectionCount()getCollectionTime() 的迭代之间和迭代后的差异。您可以阅读这些方法的 Javadoc 以获取更多信息。 - undefined
.norm字段确实代表normalized,并且对应于相关指标,但是除以jmh操作的数量。因此,如果您运行了一个调用了1,000次操作(即您的测试方法)的jmh迭代,那么例如·gc.alloc(未报告)将是在该迭代期间分配的内存大小,·gc.alloc.rate将是每单位时间(秒或毫秒)分配的内存量,而·gc.alloc.rate.norm则是每个操作分配的内存量。最后一个指标应该能让您了解您的代码(即您的“操作”)分配了多少新的内存。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接