我有一个大型 GWT 应用程序,我想通过 Super Dev Mode 进行测试。
运行应用程序时
mvn gwt:run-codeserver
它将编译好并提供服务器的 URL。此时我在网络浏览器中启动我的应用程序并尝试使用小书签再次编译它。第二次编译带来了一系列内存错误,例如:
Caused by: java.lang.OutOfMemoryError: Java heap space
...
[ERROR] Out of memory; to increase the amount of memory, use the -Xmx flag at startup (java -Xmx128M ...)
因此,我需要为运行服务器的 Java 进程分配更多内存已不是什么秘密。我无法解决的是如何做到这一点。
我的 pom.xml 中有以下内容
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwt.maven.version}</version>
<configuration>
<extraJvmArgs>-Xmx2048M -Xms1024M -Xss1024k -XX:MaxPermSize=256M -XX:PermSize=128M</extraJvmArgs>
</configuration>
</plugin>
我的 MAVEN_OPTS 环境变量设置为
MAVEN_OPTS=-Xmx2048M
我试过用 maven 执行
mvn -Dgwt.extraJvmArgs=-Xmx2048M gwt:run-codeserver
我还尝试使用 Oracle JDK 和 Fedora 提供的开源 JDK。
没有任何区别。我在这里做错了什么?
更新
我可以确认这是 Maven 插件的问题,而不是代码的问题。使用 IntelliJ 对 Super Dev Mode 的内置支持运行项目允许我很好地编译和重新编译应用程序。所以这归结为知道增加 Maven 插件也可以访问的内存的正确方法。这显然不是我上面尝试过的方法之一......