我正在尝试使用多线程编译器来减少构建的持续时间,我发现eclipse JDT Batch Compiler就是这样做的。
当我切换到JDT编译器时,我得到一个OutOfMemoryError。增加堆大小没有帮助。
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
...
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.io.BufferedReader.<init>(BufferedReader.java:80)
at java.io.BufferedReader.<init>(BufferedReader.java:91)
...
以下是build.xml的相关部分。
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<javac srcdir="${env.BUILDSRC}"
destdir="${env.BUILDBIN}"
includeantruntime="false"
debug="on"
deprecation="no"
target="1.6"
source="1.6"
fork="true"
executable="/opt/java/jdk1.6.0_65_64bit/bin/javac"
memoryInitialSize="1024M"
memoryMaximumSize="2560M"
>
<compilerarg compiler="org.eclipse.jdt.core.JDTCompilerAdapter" line="-1.6"/>
答案 0 :(得分:0)
JDTCompilerAdapter不支持&#39; fork&#39;因此它在运行ant的同一进程中进行编译。从输出中可以看出这一点:
由于编译器设置不是经典或现代的,因此忽略fork设置。
你必须增加分配给ant的内存使用量,我是用ANT_OPTS做的:
导出ANT_OPTS =&#34; -Xmx3584M&#34;