Оптимизация компилятора Java во время сборки Maven?
У меня есть профиль Maven для Java-проекта, который активируется при выполнении окончательной сборки на сервере Hudson CI.
В настоящее время настройка этого профиля только для плагина компилятора Maven следующим образом:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<debug>false</debug>
<optimize>true</optimize>
</configuration>
</plugin>
Есть ли какие-либо другие настройки или оптимизации для компилятора Java, которые должны быть сделаны для окончательной сборки, чтобы максимизировать производительность?
Ответы
Ответ 1
Предполагая, что вы работаете в JVM Sun (Hotspot), вся оптимизация происходит в JVM.
Таким образом, указание <optimize>true</optimize>
ничего не делает.
И указание <debug>false</debug>
просто удаляет отладочные символы. Это немного уменьшит размер вашего JAR файла, но значительно затруднит отслеживание производственных проблем, потому что у вас не будет номеров строк в трассировке стека.
Одна вещь, которую я хотел бы указать, - это настройки совместимости JVM:
<source>1.6</source>
<target>1.6</target>
Ответ 2
Вы даже не должны этого делать - оптимизация в javac
была отключена на некоторое время, IIRC. В основном JIT отвечает за почти всю оптимизацию, и оптимизация javac действительно вредит тому, что в некоторых случаях.
Если вы хотите настроить производительность, вы должны искать в другом месте:
- Ваш фактический код
- Параметры VM (например, настройка GC)
Ответ 3
Для нашей сборки на основе maven я не использую <debug>false</debug>
, вместо этого я устанавливаю параметры отладки с помощью <debuglevel/>
, который позволяет намного более тонкое управление {см. параметр javac -g
}.