Per impostazione predefinita, <javac>
viene eseguito in-process con Ant. È una limitazione generale di Java che non è possibile regolare un processo JVM 'Xms
e Xmx
una volta avviato il processo JVM. Quindi, il messaggio di errore che state vedendo è il software di rifiutare il tuo tentativo di violare questo principio (usando un messaggio di errore inutile, scostante.)
Se, tuttavia, si specifica l'attributo fork="true"
sul tag <javac>
si sarà essere in grado di specificare un nuovo Xms
e Xms
. Questo perché fork
ordina ad Ant di avviare un nuovo sottoprocesso JVM in cui eseguire javac
. Poiché il processo JVM è nuovo, offre ad Ant un'opportunità accettabile di specificare Xms
e Xmx
per esso.
Si potrebbe provare qualcosa di simile:.
<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>
(Si noti che sto usando compilerarg line=""
piuttosto che compilerarg value=""
L'attributo line
consente di specificare più argomenti separati da spazi L'attributo value
è per il passaggio a. argomento singolo.)
Ant aspetterà il biforcuto <javac>
per uscire, cosa che accade dopo che il processo javac
termina il suo lavoro (es. compilazione). Ant continua quindi a eseguire lo script di build all'interno del proprio processo JVM originale. Ant verificherà se il bifronte javac
non è riuscito o è riuscito e intraprende le solite azioni in base a queste informazioni.
prestazioni
Di solito è più performante di non forchetta javac
, e invece semplicemente regolare le impostazioni di memoria rilevanti per l'iniziale Ant JVM complessiva. Questa è spesso (ma non sempre) la scelta migliore perché l'avvio di una JVM separata è solitamente più lento e richiede più memoria rispetto alla semplice esecuzione di in-process con javac
.
Se si utilizza il Ant-fornito ant.bat
o ant.sh
per lanciare Ant, un modo semplice per ottimizzare Ant di Xms
e Xmx
è quello di definire l'ambiente ANT_OPTS variabili per contenere gli argomenti che si desidera. Ci molti modi per impostare le variabili d'ambiente, ma si potrebbe semplicemente modificare ant.bat
:
set ANT_OPTS=-Xms128m -Xmx512m
fonte
2010-11-09 15:39:39
è che una copia/incolla errore di quel messaggio di errore dicono valore diverso da quello fornito (32m/128m)? –
Forse hai bisogno di passare ogni argomento in un elemento separato? –
ZeissS
@ZeissS: l'elemento separato '' causa purtroppo lo stesso errore –