我最近开始与JMH合作,想知道是否有可能对其进行调试。
我做的第一件事是尝试像调试其他程序一样对其进行调试,但是它抛出“未初始化传输”,因此我无法以老式的方式对其进行调试。
我要做的下一件事是尝试在Internet上搜索,发现有人说您需要将forks设置为0,然后对其进行了尝试。
不幸的是,我无法真正理解分支为什么会影响调试,或者分支如何影响我在JMH中看到事情的方式。到目前为止,我所知道的是,当将.forks(number)放在OptionBuilder上时,它会说明基准测试将运行多少个进程。但是,如果我将.forks(3)放在3个进程异步上运行每个@Benchmark方法?
关于.forks(number)、. threads(number)的解释将如何改变基准测试的运行方式以及它们如何影响调试。
因此,正常的JMH运行有两个在任何给定时间运行的进程。第一个(“主机”)进程处理运行。第二个(“分叉”)过程是运行给定基准测试的一个过程-实现隔离。通过注解或命令行(优先于注解)请求N个fork,将对分叉进程进行N次连续调用。请求零分叉可直接在托管流程本身中运行工作负载。
因此,调试有两件事:
a)通常,您可以附加到分叉的进程,然后在其中进行调试。它有助于将工作负载配置为运行更长的时间,以便有足够的时间附加和环顾四周。分叉的进程通常以为ForkedMain其入口,在中可见jps。
b)如果上述操作不起作用,请询问-f 0并附加到宿主进程本身。
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |