降低maven构建线程/进程的优先级

时间:2017-02-20 21:04:01

标签: java multithreading maven thread-priority

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

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

之后我必须等待近5-10分钟才能完全建立项目。我的Windows工作站上无法执行任何操作:鼠标/键盘无响应。 CPU负载= 100%。

有没有办法降低maven产生的线程/进程(javac)的优先级?

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

1 个答案:

答案 0 :(得分:2)

该评论建议使用少于4个内核,以便您有自由核心来执行其他操作,这表示存在误解。在正常情况下,你的内核除了等待之外什么都没做,所以保留其中一些只是坐在那里什么也不做是没有意义的,而maven还有工作要做。关键是,正如您已经猜到的那样,让maven进程利用您机器可以提供的CPU功率,并降低maven进程的优先级,以便在maven运行时想要与计算机进行交互,你的交互获得比maven更高的优先级,所以它们很快完成,然后maven可以立即使用你的CPU的全部容量继续自己的事情。

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

更好的是,如果你的CPU足够现代,(可能是),如果你不想担心你有多少核心的问题,(你可能不会#39) ; t,)然后使用start /belownormal mvn install -T1C指示maven找出你拥有多少个核心,并为每个核心生成一个线程。这是首选,因为它允许超线程:您的CPU可能只有4个内核,但这些内核可能能够进行超线程,每个内核有2个线程,因此maven将产生8个线程。

输入help start以获取有关内置'开始'的更多选项Windows命令,可让您控制通过命令行启动的应用程序的优先级。例如,您可以指定/low而不是/belownormal;它可能会产生更好的响应速度,并且很可能不会导致mvn进程明显减慢。

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