2011-02-11 61 views
3

有什麼方法可以設置gwt compiler,以便每個排列都被編譯完成,然後再繼續下一個排列?每次編譯一個排列?

目前,即使Xmx已經在64位系統上設置爲2GB,我的堆內存已經用盡了。我不介意它只要能夠完成所有排列編譯就可以緩慢運行

+0

嘗試增加XMX超過2GB。我的項目也不是很大,它需要1GB來編譯。 – 2011-02-11 14:39:45

+0

對於一些編譯器(不知道是否包含GWT),超出2GB實際上會讓某些操作系統更糟糕。當你爲一個進程提供更多的內存時,實際上你將交換空間的內存減少了。真的很奇怪,反直覺。通常2GB是2010年計算機上的汗點。 – 2011-02-14 09:04:38

回答

2

設置localWorkers1(或者甚至更好:核心數減1)。

我們使用Maven和在默認輪廓我們建立一個FastCompiledGuvnor模塊,並在輪廓我們做真正的Guvnor模塊:

<plugin> 
    <!--use -Dgwt.compiler.skip=true to skip GWT compiler--> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>gwt-maven-plugin</artifactId> 
    <version>2.1.0-1</version> 
    <configuration> 
     <!-- The default profile needs to be fast, so we only build 1 permutation { --> 
     <module>org.drools.guvnor.FastCompiledGuvnor</module> 
     <draftCompile>true</draftCompile> 
     <!-- } --> 
     <runTarget>org.drools.guvnor.Guvnor/Guvnor.html</runTarget> 
     <compileSourcesArtifacts> 
     <compileSourcesArtifact>org.drools:drools-factconstraint</compileSourcesArtifact> 
     <compileSourcesArtifact>org.drools:drools-ide-common</compileSourcesArtifact> 
     </compileSourcesArtifacts> 
     <gwtSdkFirstInClasspath>true</gwtSdkFirstInClasspath><!-- The GWT compiler must the correct JDT version --> 
     <localWorkers>2</localWorkers><!-- Using all workers can temporarily hang the mouse and isn't much faster --> 
     <extraJvmArgs>-Xmx512m</extraJvmArgs> 
    </configuration> 
    ... 
    </plugin> 

    ... profile ... 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>gwt-maven-plugin</artifactId> 
     <configuration> 
      <!-- Build all GWT permutations and optimize them --> 
      <module>org.drools.guvnor.Guvnor</module> 
      <draftCompile>false</draftCompile> 
     </configuration> 
     </plugin>