2013-12-18 44 views
0

我有四核處理器。當我在我的項目運行「MVN測試」時,CPU被加載幾乎100%:如何在運行Maven測試時優化CPU使用率

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

在我的一些測試中,我創建了一個新線程,它必須等待(有一些超時)來自另一個線程的一些通知。 –

+1

可以顯示maven-surefire-plugin的完整配置,特別是使用多線程配置,分叉JVM等嗎? – khmarbaise

回答

4

您應該使用分析器連接到該VM並分析CPU時間花費的位置。要獲得快速結果,您可以使用Java Visual VM profiling。要進行更詳細的分析,請使用專業的分析器。

2

我也會推薦VisualVM。還有另外一個可能有用的工具,叫做jvmtop以及命令行。

你也應該確保你不會產生更多的線程,然後核心可用,因爲交換將使用CPU很多。同時也要注意線程在等待的方式,因爲當線程處於一個緊密的循環中時會發生如此高的CPU負載。 while(!foo) {} ...等

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環境變量設置完畢。如果需要,可以隨意增加指定的值,例如,如果在運行項目時出現「內存不足」錯誤。

相關問題