Java 如何停止JMH基准测试? 让我们假设我们处于JMH基准的中间,我们发现有些事情是错的。例如,没有必要的资源,或者只是发生了一些错误 停止所有测量和基准的正确方法是什么?调用没有零参数的System.exit(…)是唯一的选择吗 如果我们只想中止当前的基准,
如何停止JMH基准测试?Java 如何停止JMH基准测试? 让我们假设我们处于JMH基准的中间,我们发现有些事情是错的。例如,没有必要的资源,或者只是发生了一些错误 停止所有测量和基准的正确方法是什么?调用没有零参数的System.exit(…)是唯一的选择吗 如果我们只想中止当前的基准,,java,benchmarking,jmh,Java,Benchmarking,Jmh,如何停止JMH基准测试? 让我们假设我们处于JMH基准的中间,我们发现有些事情是错的。例如,没有必要的资源,或者只是发生了一些错误 停止所有测量和基准的正确方法是什么?调用没有零参数的System.exit(…)是唯一的选择吗 如果我们只想中止当前的基准,而继续使用其他基准,该怎么办 你有没有读过?@Eugene我可以从链接中看到每个测试线程都在检查引擎盖下的isDone标志。当我通过抛出一些东西使每个测试线程完成操作,并且每个线程都是守护进程线程时,整个JMH基准测试将停止(但我需要以自己的方
让我们假设我们处于JMH基准的中间,我们发现有些事情是错的。例如,没有必要的资源,或者只是发生了一些错误
System.exit(…)
是唯一的选择吗你有没有读过?@Eugene我可以从链接中看到每个测试线程都在检查引擎盖下的
isDone
标志。当我通过抛出一些东西使每个测试线程完成操作,并且每个线程都是守护进程线程时,整个JMH基准测试将停止(但我需要以自己的方式实现这一点)。我看不到任何内置机制可以从一个测试操作中停止所有操作(除了系统。退出(…)
)好吧,停止单个操作很容易,您可以使用@TearDown
方法,但要停止所有操作,您可以使用。shouldFaildOnError(true)
System.exit
不会有帮助,因为测试通常在分叉的VM中运行。我发现从QuickFix/J创建的一个线程不是守护进程线程,这导致测试永远运行。设置shouldFaildOnError(true)
对这种情况没有帮助。我需要在程序中检查是否发生了错误(通过捕获测试中的异常),并手动停止QF/J线程。我期望的是,如果测试方法出现异常(并且没有活动的测试工作线程),JMH框架应该停止测试JVM。因为它创建了新的JVM进程,所以如果我指定shouldFaildOnError(true)
,它应该完全控制之后的进程。出于兼容性原因,可能应该有另一个标志。interruptAllThreadsAfterTest(true)
。在所有测试工作人员完成之后,在给not守护进程线程一段时间关闭之后,JMH可以中断其余线程并等待加入。或者我错过了什么,也许?