在Maven构建期间优化Java编译器?

时间:2010-11-18 19:28:46

标签: java performance maven-2 compiler-construction build

我有一个Java项目的Maven配置文件,在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编译器是否有任何其他调整或优化,最终构建应该如何才能最大限度地提高性能?

3 个答案:

答案 0 :(得分:18)

假设您在Sun(Hotspot)JVM上运行,所有优化都在JVM中进行。

因此指定<optimize>true</optimize>不会做任何事情。

指定<debug>false</debug>只会删除调试符号。这将略微降低您的JAR文件大小,但要更难以跟踪生产问题,因为您的堆栈跟踪中不会有行号。


指定的一件事是JVM兼容性设置:

<source>1.6</source>
<target>1.6</target>

答案 1 :(得分:11)

你甚至不应该这样做 - javac中的优化已被禁用了很长一段时间,IIRC。基本上JIT负责几乎所有的优化,并且在某些情况下javac优化实际上伤害

如果您希望调整性能,请查看其他地方:

  • 您的实际代码
  • VM选项(例如GC调整)

答案 2 :(得分:1)

对于基于maven的构建,我不使用<debug>false</debug>而是使用<debuglevel/>设置调试选项,这样可以实现更精细的控制{请参阅javac选项-g}。