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

HDa*_*ave 10 java compiler-construction performance maven-2 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>
Run Code Online (Sandbox Code Playgroud)

Java编译器是否还有其他调整或优化,最终构建应该如何才能最大限度地提高性能?

Ano*_*non 18

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

所以指定<optimize>true</optimize>什么都不做.

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


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

<source>1.6</source>
<target>1.6</target>
Run Code Online (Sandbox Code Playgroud)

  • @HDave - 调试信息存储在.class文件中的LineNumberTable和LocalVariableTable中(请参阅http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html).虽然这可能会占用额外的内存,但它与字节码是分开的,因此不会直接影响执行性能. (3认同)

Jon*_*eet 11

你甚至不应该这样做 - 优化javac已经被禁用了很长一段时间,IIRC.基本上JIT几乎负责所有优化,并且在某些情况下javac优化实际上会受到影响.

如果你想调整性能,你应该寻找其他地方:

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