我使用我的maven项目的并行构建.
通常我运行mvn install -T 4(我的PC上有4个内核).
之后我必须等待近5-10分钟才能完全建立项目.我的Windows工作站上无法执行任何操作:鼠标/键盘无响应. CPU负载= 100%.
有没有办法降低maven生成的线程/进程(javac)的优先级?
据我所知,如果我将优先级设置为低于正常水平 – 操作系统将为maven构建安排更少的时间,为其他程
最佳答案 评论建议使用少于4个内核,以便你有自由核心做其他事情代表一种误解.在正常情况下,你的内核除了等待之外什么都没做,所以保留其中一些只是坐在那里什么也不做是没有意义的,而maven还有工作要做.关键是,正如您已经猜到的那样,让maven进程利用您机器可以提供的CPU功率,并降低maven进程的优先级,以便在maven运行时想要与计算机进行交互,你的交互获得比maven更高的优先级,所以它们很快完成,然后maven立即使用你的CPU的全部容量自由地继续它自己的事情.
因此,在Windows下,在命令提示符下,启动/低于正常mvn install -T 4将执行此操作.
更好的是,如果你的CPU足够现代,(并且它可能是),如果你不想担心你有多少核心的问题,(你可能不会),那么使用start / belownormal mvn install -T1C指示maven确定你拥有多少个核心,并为每个核心生成一个线程.这是首选,因为它允许超线程:您的CPU可能只有4个内核,但这些内核可能能够超线程,每个内核有2个线程,因此maven将产生8个线程.
键入help start以获取有关Windows内置“start”命令的更多选项,该命令可让您控制通过命令行启动的应用程序的优先级.例如,您可以指定/ low而不是/ belownormal;它可能会产生更好的响应性,并且很可能没有明显的mvn过程减速.
保留核心可能有意义的唯一情况是,如果你想与maven并行运行其他CPU密集型任务(你可能没有),并且你不相信Windows调度程序能够做好工作在编排这个. (你应该.)