有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在ant脚本中将JVM参数传递给clover

我在ANT脚本中从CloverETL调用runGraph类,如下所示

      <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>

当clover启动时,我可以在日志中看到:

    [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!

我的问题是:如何让clover运行的内存超过3005703 kB?这个脚本运行的服务器上实际上有100gig的可用ram

编辑:我知道我所看到的clover没有在一个单独的jvm上运行,我猜它使用了当前jvm实例上所有可用的可用内存。我需要找到一种方法在一个单独的jvm上启动clover,我可以通过-Xms10240m-Xmx10240m


共 (1) 个答案

  1. # 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>
    

    您正在另一个VM中执行该类。这就是fork=true的意思