我有四核处理器。当我在我的项目中运行'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?
答案 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环境变量。如果需要,可以随意增加指定值,例如,如果在运行项目时出现“内存不足”错误。