缺省情况下, 使用 Ant 在进程内运行。Java的一般限制是,您无法调整JVM进程,并且一旦该JVM进程启动。因此,您看到的错误消息是软件拒绝您违反此原则的尝试(使用无益,不友好的错误消息)。<javac>
Xms
Xmx
但是,如果在标记上指定属性,则可以指定新的 和 。这是因为指示 Ant 启动要在其中运行 的新 JVM 子进程。因为 JVM 进程是新的,所以它为 Ant 提供了一个可接受的机会来指定和指定它。fork="true"
<javac>
Xms
Xms
fork
javac
Xms
Xmx
你可以尝试这样的事情:
<project name="project" default="all" basedir="[yourvalue]">
<target name="all">
<javac srcdir="[yourvalue]" destdir="[yourvalue]" fork="true">
<!-- javac requires that -Xmx and -Xms be prefixed with -J -->
<compilerarg line="-J-Xms128m -J-Xmx512m" />
</javac>
</target>
</project>
(请注意,我正在使用而不是.该属性允许您指定多个空格分隔的参数。该属性用于传递单个参数。compilerarg line=""
compilerarg value=""
line
value
Ant 将等待分叉退出,这发生在进程完成其工作(即编译)之后。然后,Ant 继续在其自己的原始 JVM 进程中运行构建脚本。Ant将检查分叉是否失败或成功,并根据此信息采取通常的操作。<javac>
javac
javac
性能
通常,不分叉的性能会更高,而是简单地调整初始 Ant JVM 的相关内存设置。这通常是(但并非总是)最佳选择,因为启动单独的JVM通常比简单地允许在进程内运行更慢并且占用更多内存。javac
javac
如果您使用的是 Ant 提供或启动 Ant,则调整 Ant 的一种简单方法是定义环境变量ANT_OPTS以包含所需的参数。有很多方法可以设置环境变量,但您可以直接编辑:ant.bat
ant.sh
Xms
Xmx
ant.bat
set ANT_OPTS=-Xms128m -Xmx512m