我使用Maven Project的并行构建。
通常我运行mvn install -T 4
(我的PC上有4个内核)。
之后,我必须等待将近5-10分钟才能完全构建项目。我在Windows Workstation上无法做任何事情:鼠标/键盘没有响应。CPU负载= 100%。
有什么方法可以减少Maven产生的线程/过程(Javac)的优先级?
我知道我是否将优先级设置为正常 - OS将安排更少的Maven构建时间,而其他程序则更多。
评论建议使用少于4个内核,以便您有自由核心做其他事情代表误解。在正常情况下,您的核心大部分都没有等待,所以保留其中一些只是坐在那里的事情毫无意义,而Maven有工作要做。正如您已经猜到的那样,关键是让Maven流程使用机器所能提供的CPU功率尽可能多,并减少Maven过程的优先级,以便当您想在Maven运行时与计算机进行交互时,您的互动比Maven更高的优先级,因此它们很快完成,此后Maven可以免费使用CPU的全部容量来进行自己的事情。
因此,在Windows下,在命令提示符下,start /belownormal mvn install -T 4
会这样做。
更好的是,如果您的CPU足够现代,并且可能是),并且如果您不想担心您有多少核心的问题(您可能不这样做,)然后使用start /belownormal mvn install -T1C
指示Maven弄清楚您拥有多少个核心,然后每个核心一个线程。这是优选的,因为它允许进行超线程:您的CPU可能只有4个内核,但是这些内核可能能够用每个核心2个线程进行超线程,因此Maven将产生8个线程。
类型help start
有关Windows的内置"启动"命令的更多选项,该选项可控制您通过命令行启动的应用程序的优先级。例如,您可以指定/low
而不是/belownormal
;它可能会产生更好的响应能力,并且很可能不会导致mvn
流程的变慢。
保留核心可能有意义的唯一情况是,如果您想与Maven并行执行其他CPU密集型任务(您可能不),和t相信Windows Scheduler在编排此操作方面做得很好。(您应该。)