Время сборки существенно возрастает при переключении на Java 7
Мы используем Java в нашем процессе сборки, поскольку он используется для разрешения/публикации наших зависимостей через Ivy.
Нет проблем, и у нас не было двух лет, пока мы не попытаемся обновить обновление для Java 6 Update 26 до версии 7 7, а сборка на локальном ПК разработчика (WinXP) теперь занимает 2 часа, вместо 10 минут!
Ничто другое не изменилось на ПК, что делает его абсолютной целью для наших проблем.
Кто-нибудь знает о какой-либо причине, почему версия 7 Java будет делать такую разницу в скорости, как это?
UPDATE: процесс сборки основан на NAnt, поэтому Java.exe вызывается из NAnt script, работающего в окне Command (DOS).
Ответы
Ответ 1
По моему опыту, Java 7 была огромным шагом назад с точки зрения скорости и совместимости. Я нашел его медленнее не только для компиляции, но и для JRE.
У меня также были серьезные проблемы с запуском eclipse (и да, я использовал обновление 7).
И с моей точки зрения в Java 7 нет ничего, что мне нужно. Мне нравится ForkJoinPool, и я могу получить это как дополнение к библиотеке для Java 6.
Может быть, Java 8 будет лучше.
Ответ 2
Я использую JDK 7u7, и я заметил лучшую производительность, настроив некоторые Параметры VM.
Вы можете попробовать G1GC и AgressiveOpts, чтобы помочь с временем компиляции.
Следуйте настройкам, которые я использую в своем редакторе:
-Xss8m
-Xmn256m
-Xms512m
-Xmx1024m
-XX:PermSize=256m
-XX:MaxPermSize=512m
-XX:+UseG1GC
-XX:+OptimizeStringConcat
-XX:+UseStringCache
-XX:+AggressiveOpts
Вы найдете описание каждого параметра в Параметры виртуальной машины.
Надеюсь, это поможет.
Ответ 3
Сначала вы удалили JDK6 или оставили его на месте? Проверьте JDK_HOME и любое другое место, которое оно указано, чтобы убедиться, что вы действительно используете JDK7. В консоли XP type java -version
и убедитесь, что это то, что ожидается. (Закройте/снова откройте командную строку, чтобы получить изменения в графическом интерфейсе Win.)
Никогда не указывалось, какая версия XP вы используете - 64-разрядная или 32-разрядная. Убедитесь, что на компьютере установлена соответствующая среда JDK. (В зависимости от того, что именно выполняется, это может привести к ощутимой разнице. Кроме того, лучшим вариантом для отладки является сохранение ее прежней - уменьшите переменные.)
Устранить проблему и сузить ее. Устанавливает ли установка Eclipse медленнее после обновления? (Eclipse сам работает в JVM. Это хорошая базовая линия.) Является ли Eclipse указывая на правильный JDK, когда вы его проверяете? Попробуйте другие инструменты Java, чтобы увидеть, есть ли разница в производительности. Точки останова и ведение журнала в разных контрольных точках в сборке и любые исполняемые файлы Java - ваши друзья.
Так как Nant основан на .NET, вы посмотрели на фактически запущенный Java-процесс? Является ли ваше распределение Айви действительно старым?
Все это сказало, мне трудно поверить, что это проблема Java, а не проблема с конфигурацией в окне Windows. В любом случае, вы пробовали его на любых других машинах?