如何在运行Maven测试时优化CPU利用率

时间:2013-12-18 08:09:44

标签: java maven testing junit cpu-usage

我有四核处理器。当我在我的项目中运行'mvn test'时,CPU几乎100%加载:

 PID   USER     PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   
 20641 user     20   0 3338212 339232   5076 S 397.7  9.1   2:16.19 java

我的单元测试因为超时时间。当我使用eclipse插件进行JUnit测试时运行速度更快,并且不会在100%时加载CPU。我的配置如下......

Maven 3.1.0
JUnit 4.10
Oracle JDK 1.7.0_40

有什么方法可以解决这个问题吗?可能我应该使用maven进行一些配置或使用具有特定配置的maven-surefire-plugin?

3 个答案:

答案 0 :(得分:4)

您应该使用分析器连接到该VM并分析CPU时间的花费。要获得快速结果,您可以使用Java Visual VM profiling。有关更详细的分析,请使用专业的分析器。

答案 1 :(得分:2)

我也会推荐VisualVM。还有另一种可能有用的工具,它叫做jvmtop和命令行。

您还应该确保不会产生更多线程,然后可用核心,因为交换将大量使用CPU。还要注意线程等待的方式,因为当线程处于紧密循环中时会发生如此高的CPU负载,例如: while(!foo) {} ......等等

答案 2 :(得分:1)

设置MAVEN_OPTS环境变量可确保有足够的内存可用于运行Maven任务并降低CPU利用率。

在Mac OS X上,您可以编辑.bash_profile文件并添加以下内容:

export MAVEN_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=1024m"

重新启动终端会话或运行源.bash_profile以激活环境变量。 在Linux上,您可以编辑.bashrc文件并添加以下内容:

export MAVEN_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=1024m"

重新启动终端会话或运行源.bashrc以激活环境变量。 在Windows上,在用户级别设置环境变量

MAVEN_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=1024m"

现在已设置MAVEN_OPTS环境变量。如果需要,可以随意增加指定值,例如,如果在运行项目时出现“内存不足”错误。