Передать аргументы JVM клеверу в скрипте муравья
Я вызываю класс runGraph из CloverETL в сценарии ANT, как это
<java classname="org.jetel.main.runGraph" fork="true" failonerror="true">
<arg value="${canadapostdir}/metadata/CanadaPostADDTypes34.grf"/>
<classpath>
<pathelement path="${ear.lib}/clover.jar" />
<pathelement path="${ear.libext}/oracle.jdbc/ojdbc6.jar" />
<pathelement path="${ear.libext}/mysql.jdbc/mysql-connector-java-3.0.15-ga-bin.jar" />
<fileset dir="${ear.lib}">
<include name="*.jar"/>
</fileset>
</classpath>
</java>
Когда начинается клевер, я вижу это в журнале:
[java] [Clover] starting WatchDog thread ...
[java] [WatchDog] Thread started.
[java] [WatchDog] Running on 16 CPU(s) max available memory for JVM 3005703 kB
[java] [Clover] Initializing phase: 0
[java] all edges initialized successfully...
[java] initializing nodes:
[java] INPUT ...OK
[java] TYPEFILTER ...OK
[java] REF ...OK
[java] OUTPUT ...OK
[java] [Clover] phase: 0 initialized successfully.
[java] [WatchDog] Starting up all nodes in phase [0]
[java] [WatchDog] INPUT ... started
[java] [WatchDog] TYPEFILTER ... started
[java] [WatchDog] REF ... started
[java] [WatchDog] OUTPUT ... started
[java] [WatchDog] Sucessfully started all nodes in phase!
Мой вопрос: как я могу запустить клевер с большим объемом памяти, чем 3005703 КБ? На сервере действительно 100 ГБ свободного ОЗУ, на котором работает этот скрипт.
РЕДАКТИРОВАТЬ: я знаю, что я вижу, что клевер не работает на отдельном jvm и что он использует всю свободную память, доступную на текущем экземпляре JVM, я думаю. Мне нужно найти способ запустить клевер на отдельном jvm, который я могу передать -Xms10240m -Xmx10240m.
1 ответ
Решение
<jvmarg>
вложенные элементы используются для передачи аргументов JVM:
<java classname="org.jetel.main.runGraph" fork="true" failonerror="true">
<arg value="${canadapostdir}/metadata/CanadaPostADDTypes34.grf"/>
<jvmarg value="-Xms1024M"/>
<jvmarg value="-Xmx10240M"/>
<classpath>
<pathelement path="${ear.lib}/clover.jar" />
<pathelement path="${ear.libext}/oracle.jdbc/ojdbc6.jar" />
<pathelement path="${ear.libext}/mysql.jdbc/mysql-connector-java-3.0.15-ga-bin.jar" />
<fileset dir="${ear.lib}">
<include name="*.jar"/>
</fileset>
</classpath>
</java>
Вы выполняете класс в другой виртуальной машине. Это то что fork=true
средства.