增加tomcat7 maven插件的内存?

Seb*_*ebi 27 java maven tomcat7

我想使用tomcat7-maven-plugin直接从maven启动一个嵌入式tomcat7实例.这工作正常,但Tomcat启动似乎没有足够的内存.我怀疑我需要设置

-XX:MaxPermSize=256m
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚该怎么做.

文档说应该使用插件的"配置"部分中的"systemProperties"元素.但是,选项被指定为XML元素,并且需要看起来像这样:

<configuration>
  <systemProperties>
    <XX:MaxPermSize>256m</XX:MaxPermSize>
  </systemProperties>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但这当然不可能,因为它打破了XML(XX被解释为命名空间).

当然,我可以通过设置环境变量来解决这个问题

MAVEN_OPTS=-XX:MaxPermSize=256m
Run Code Online (Sandbox Code Playgroud)

但我宁愿只为嵌入式Tomcat增加它.任何想法如何做到这一点?

小智 14

正如大多数人在上面的评论中所说,pom.xml中的属性没有效果.对我有用的是设置我的MAVEN_OPTS

MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"
Run Code Online (Sandbox Code Playgroud)

或者在cmd终端的Windows上:

set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m
Run Code Online (Sandbox Code Playgroud)

对于mac/linux用户,只需在〜/ .profile(或类似文件名)中添加一个export语句.例如:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"
Run Code Online (Sandbox Code Playgroud)

然后重启你的shell.

  • 问题是你的解决方案_Sebi_没有*改变已启动的Tomcat进程的内存,就像上面已经指出的_rzrelyea_一样,根本没有启动单独的Tomcat进程. (2认同)

Ren*_*get 3

可以这样设置属性

<configuration>
  <systemProperties>
    <JAVA_OPTS>-Xms256m -Xmx512m -XX:MaxPermSize=256m</JAVA_OPTS>
  </systemProperties>
</configuration>
Run Code Online (Sandbox Code Playgroud)

  • 将其添加到 pom.xml 将不起作用,为时已晚。您必须在“运行”-&gt;“运行配置...”-&gt;“JRE”选项卡-&gt;“VM 参数”中将此类参数直接传递到 JVM。您可以使用 VisualVM(Oracle JDK 中嵌入的简单分析器)检查发生了什么。 (19认同)
  • 这实际上对我来说根本不起作用,而且我也没有真正期望它会起作用。java进程已经启动了,似乎[即使你fork,你仍然没有得到新的java进程](http://mojo.10943.n7.nabble.com/How-to-set-user- timezone-within-tomcat-maven-plugin-td36517.html)。所以我认为你必须在启动 Maven 之前设置最大堆大小。当我尝试使用 &lt;JAVA_OPTS&gt; 标签将 perm 大小设置为 256 时,我在启动应用程序后执行了 jstat -gccapacity maven-pid ,发现我的最大 perm gen 仍然只有 82 kb (11认同)
  • 我同意 *rzrelyea* 的观点,即这不起作用,而且对其起作用的期望充其量也很低。由于它没有记录在案,看起来很像是*Rene Herget* 只是梦想出来的。除非有更多信息可用,否则我将投票反对! (3认同)
  • 根本不起作用,不应该是公认的答案。正如文档所述和标签建议您可以这样设置**系统属性**,但不能设置**环境变量** (3认同)
  • @Sebi我刚刚测试了这个,它对启动的tomcat实例没有影响,正如这里其他人所说的那样。如果你成功了,你就在做比我们其他人不同的事情...... (2认同)