2012-08-13 100 views
25

我想使用tomcat7-maven-plugin直接從maven啓動一個嵌入式tomcat7實例。這工作正常,但Tomcat開始似乎沒有足夠的內存。我懷疑我需要設置增加tomcat7 maven插件的內存?

-XX:MaxPermSize=256m 

但我不知道該怎麼做。

該文檔說應該在插件的「配置」部分使用「systemProperties」元素。然而,這些選項被指定爲XML元素,將需要看起來像:

<configuration> 
    <systemProperties> 
    <XX:MaxPermSize>256m</XX:MaxPermSize> 
    </systemProperties> 
</configuration> 

但是,這當然是不可能的,因爲它打破了XML(XX被解釋爲一個命名空間)。

當然,我可以解決這個問題,通過設置環境變量

MAVEN_OPTS=-XX:MaxPermSize=256m 

但我寧願只增加其嵌入式的Tomcat。任何想法如何做到這一點?

回答

2

您可以用這種方式

<configuration> 
    <systemProperties> 
    <JAVA_OPTS>-Xms256m -Xmx512m -XX:MaxPermSize=256m</JAVA_OPTS> 
    </systemProperties> 
</configuration> 
+2

非常酷,即使根本沒有記錄:-) – Sebi 2012-08-13 14:22:38

+11

這實際上並沒有爲我工作,我真的不希望它。 java進程已經開始,看起來[即使你fork了,你仍然沒有得到一個新的java進程](http://mojo.10943.n7.nabble.com/How-to-set-user-時區中之Tomcat的行家-插件-td36517.html)。所以我認爲你必須在開始maven之前設置最大堆大小。當我試圖使用標記將perm大小設置爲256時,我在啓動應用程序後執行了jstat -gccapacity maven-pid,並且看到我的最大燙髮代碼仍然只有82 kb – rzrelyea 2013-05-13 17:01:47

+18

將此添加到pom.xml中不會工作,爲時已晚。 您必須將這些參數直接傳遞給JVM,在Run - > Run configurations ...-> JRE tab - > VM Arguments中。 您可以使用VisualVM(嵌入您的Oracle JDK的簡單剖析器)檢查發生了什麼。 – 2013-06-06 07:43:11

13

由於大多數表示,在pom.xml中的屬性上述意見沒有effct設置的屬性。什麼工作對我來說是我的設置MAVEN_OPTS

MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m" 

或Windows的CMD端子:

set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m 

對於Mac/Linux用戶來說,只需要加一個導出語句到你的〜/ .profile文件(或類似文件名)。例如:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m" 

然後重新啓動你的shell。

+0

當然,我在回答中提到的maven屬性並沒有改變Maven進程的內存,但對於由Maven開始的Tomcat進程。這就是原來的海報問:如何增加tomcat7 maven插件的內存! – Sebi 2014-10-06 17:29:11

+2

問題在於你的解決方案_Sebi_不會*像* _rzrelyea_已經指出的那樣改變啓動的Tomcat進程的內存,根本不會啓動單獨的Tomcat進程。 – 2015-03-08 07:07:10

+0

要小心如果你使用「分流」surefire測試亞軍,它可能不尊重MAVEN_OPTS ... http://stackoverflow.com/questions/4066424/java-lang-outofmemoryerror-java-heap-space-in- maven – rogerdpack 2015-04-20 13:34:58

0

這一個爲我工作:

<plugin> 
    <groupId>org.codehaus.cargo</groupId> 
    <artifactId>cargo-maven2-plugin</artifactId> 
    <version>...</version> 
    <configuration> 
     <container>...</container> 
     <configuration> 
      <type>standalone</type> 
      <home>...</home> 
      <properties> 
       <cargo.jvmargs>-Xmx4096m</cargo.jvmargs> 
      </properties> 
     </configuration> 
     <deployables>...</deployables> 
    </configuration> 
</plugin> 

它開始了我的tomcat8與參數 「-Xmx4096m」 一個新的JVM。

+0

這很棒,除了不是tomcat7插件的配置,它是貨物插件的配置。 – 2017-06-12 20:16:15