2013-12-18 3 views
0

У меня четырехъядерный процессор. И когда я бег «тест МВЕН» в моем проекте, процессор загружен почти на 100%:Как оптимизировать загрузку процессора во время работы тестов Maven

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, работайте быстрее и не загружайте CPU на 100%. Моя конфигурация следующая:

Maven 3.1.0 
JUnit 4.10 
Oracle JDK 1.7.0_40 

Есть ли способ решить эту проблему? Может быть, мне нужно сделать некоторые конфигурации с помощью maven или использовать maven-surefire-plugin с определенными конфигурациями?

+3

трудно сказать без вашего теста. Если вы проверите алгоритм дешифрования, это не будет сюрпризом. Если вы проверите «Hello, World», это будет странно. –

+0

В некоторых моих тестах я создаю новый поток, который должен ждать (с некоторым таймаутом) некоторого уведомления из другого потока. –

+1

Можете ли вы показать полную конфигурацию для maven-surefire-plugin, в частности, используете ли вы многопоточную конфигурацию, разветвляя JVM и т. Д.? – khmarbaise

ответ

4

Вы должны подключиться к этой виртуальной машине с помощью профилировщика и проанализировать, где расходуется процессорное время. Для получения быстрых результатов вы можете использовать Java Visual VM profiling. Для более детального анализа используйте профессиональный профилировщик.

2

Я бы порекомендовал VisualVM, тоже. Есть еще один инструмент, который может быть полезен, он называется jvmtop и для командной строки.

Вы также должны убедиться, что вы не создаете больше потоков, чем ядра, потому что обмен будет много использовать процессор. Также помните о том, как ваши потоки ждут, так как такая высокая загрузка ЦП происходит, когда поток находится в плотном цикле, например. while(!foo) {} ... и т. Д.

1

Настройка переменной среды MAVEN_OPTS обеспечивает достаточную память для запуска задач Maven и уменьшения использования ЦП.

В Mac OS X вы можете редактировать файл .bash_profile и добавить следующее:

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

Restart терминал сеанса или запустить источник .bash_profile активировать переменную окружения. В Linux вы можете редактировать файл .bashrc и добавьте следующие строки:

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

Restart терминал сеанс или запустить источник .bashrc, чтобы активировать переменное окружение. В Windows, установить переменные среды на уровне пользователя

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

Ваш MAVEN_OPTS переменная окружения установлена. Не стесняйтесь увеличивать указанные значения, если это необходимо, например, если вы получаете ошибки «из памяти» при запуске ваших проектов.

Смежные вопросы