我有一个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编译器是否有任何其他调整或优化,最终构建应该如何才能最大限度地提高性能?
答案 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优化实际上伤害。
如果您希望调整性能,请查看其他地方:
答案 2 :(得分:1)
对于基于maven的构建,我不使用<debug>false</debug>
而是使用<debuglevel/>
设置调试选项,这样可以实现更精细的控制{请参阅javac选项-g
}。