Domyślnie <javac>
działa w procesie z Ant. Jest ogólnym ograniczeniem Javy, że nie można dostosować procesu JVM "Xms
i Xmx
po uruchomieniu procesu JVM. Tak, komunikat o błędzie, który widzisz jest oprogramowanie odrzuceniu próbę naruszenia tej zasady (przy użyciu niepomocny, nieprzyjazny komunikat o błędzie).
Jeśli jednak określić atrybut fork="true"
w znaczniku <javac>
ty będzie być w stanie określić nowe Xms
i Xms
. Jest tak, ponieważ fork
instruuje Ant, aby uruchomił nowy podproces JVM, w którym ma działać javac
. Ponieważ proces JVM jest nowy, daje Ant możliwą do zaakceptowania możliwość określenia dla niego Xms
i.
Można spróbować coś takiego:.
<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>
(Zawiadomienie Używam compilerarg line=""
zamiast compilerarg value=""
Atrybut line
pozwala określić wiele argumentów oddzielonych spacjami Atrybut value
jest przy mijaniu. pojedynczy argument.)
Mrówka będzie czekać na rozwidlone <javac>
do zakończenia, co dzieje się po zakończeniu procesu javac
(tj. kompilowanie). Ant następnie kontynuuje uruchamianie skryptu kompilacji wewnątrz własnego oryginalnego procesu JVM. Ant sprawdzi, czy rozwidlone javac
nie udało się lub odniosło sukces, i podejmuje zwykłe działania w oparciu o te informacje.
Wydajność
To zazwyczaj bardziej wydajnych do nie widelcem javac
i zamiast po prostu dostroić odpowiednie ustawienia pamięci dla początkowej JVM Ant ogólnej. Często jest to (ale nie zawsze) najlepszy wybór, ponieważ uruchamianie oddzielnej maszyny JVM jest zwykle wolniejsze i zajmuje więcej pamięci niż po prostu pozwolenie na uruchomienie procesu javac
.
Jeśli używasz Ant-warunkiem ant.bat
lub ant.sh
uruchomić mrówki, łatwą drogę do dostroić ant Xms
i Xmx
jest zdefiniowanie zmiennej środowiskowej ANT_OPTS zawierać argumenty chcesz. Istnieje wiele sposobów, aby ustawić zmienne środowiskowe, ale można po prostu edytować ant.bat
:
set ANT_OPTS=-Xms128m -Xmx512m
jest to kopia/error pasta, że komunikat o błędzie powiedzieć inna wartość niż jednym warunkiem (32m/128m)? –
Może musisz przekazać każdy argument w oddzielnym elemencie ? –
ZeissS
@ZeissS: oddzielny element ' ' powoduje ten sam błąd, niestety, –