降低 Maven 构建的优先级 threads/processes

Decrease priority of maven build threads/processes

我使用并行构建我的 maven 项目。

通常我 运行 mvn install -T 4(我的电脑上有 4 个内核)。

之后我必须等待将近 5-10 分钟才能完全构建项目。我无法在 Windows 工作站上执行任何操作:mouse/keyboard 没有响应。 CPU 负载 = 100%。

有什么方法可以降低 Maven 生成的 threads/processes(javac) 的优先级吗?

据我了解,如果我将优先级设置为低于正常水平 - OS 将为 Maven 构建安排更少的时间,为其他程序安排更多的时间。

建议使用少于 4 个内核以便您有空闲内核来做其他事情的评论是一种误解。在正常情况下,您的内核除了等待外几乎什么都不做,因此保留其中一些内核只是坐在那里什么都不做是没有意义的,而 maven 有工作要做。重点是,正如您已经猜到的那样,让 maven 进程利用您的机器所能提供的尽可能多的 CPU 能力,并降低 maven 进程的优先级,以便当您想要与您的计算机交互时当 maven 处于 运行ning 时,您的交互比 maven 获得更高的优先级,因此它们可以快速完成,并且紧接着 maven 可以自由地使用您的 CPU.[=16 的全部容量来处理它自己的事情=]

因此,在 windows 下,在命令提示符下,start /belownormal mvn install -T 4 将执行此操作。

更好的是,如果您的 CPU 足够现代,(而且它可能是,)并且如果您不想担心您拥有多少核心的问题,(您可能不会,) 然后使用 start /belownormal mvn install -T1C 指示 maven 计算出您有多少个内核,并为每个内核生成一个线程。这是更可取的,因为它允许 hyper-threading:您的 CPU 可能只有 4 个核心,但这些核心可能能够 hyper-threading 每个核心 2 个线程,因此 Maven 将生成 8 个线程。

键入 help start 以获取有关 Windows 的 built-in 'start' 命令的更多选项,它使您可以控制通过 [=32] 启动的应用程序的优先级=].例如,您可以指定 /low 而不是 /belownormal;它可能会产生更好的响应能力,并且很可能 mvn 过程没有明显的减速。

保留核心可能有意义的唯一情况是,如果您想 运行 其他 CPU-intensive 任务与 maven 并行,(您可能不需要,)and 你不相信 Windows 调度程序可以很好地协调它。 (你应该。)