拥有分叉的java VM意味着什么?

时间:2011-12-15 03:13:56

标签: java virtual-machine

我运行JUnit测试时有时会遇到此错误。

我并不是在问这个错误是什么。我只是想知道java VM分叉时它意味着什么?

2 个答案:

答案 0 :(得分:24)

“分叉的虚拟机”不是错误(尽管你得到的错误可能与它有关)。

编译和测试的各个方面涉及的一些工具(例如Maven)是用Java编写的,并使用JVM自行运行。

如果您为应用程序运行单元测试而不分支VM,Maven将在Maven运行的同一个VM中运行这些测试。因此,它可能受某些VM范围设置(例如某些系统属性)的影响。

为避免Maven产生的副作用,可以在分叉的虚拟机中运行测试,也就是说,在操作系统中作为不同进程运行的完全独立的虚拟机中运行测试。

(这可以应用于其他工具,Maven只是一个例子。)

崩溃分叉的VM至少可以让你回到另一个启动并编排这些单元测试的Java应用程序。如果您在同一个VM中运行这些测试,那么您也会使启动测试的应用程序崩溃(从而获得非常少的信息)。

答案 1 :(得分:2)

A' fork' is Linux中用来表示执行另一个进程(松散地)的术语。在这种情况下,分叉Java VM是一个子进程,用于按类或方法隔离单元测试,确保多个测试之间不会发生状态污染。

JUnit ant任务支持多种分叉模式,可以看作here

我看到错误表明分叉的VM在使用JUnit时已经死亡。这意味着您的测试崩溃并且您的JUnit运行程序(通常是ant)无法获得任何输出。

您应该尝试解决崩溃的原因。