2

スーパー開発モードでテストしたい大規模なGWTアプリケーションがあります。

でアプリを実行する場合

mvn gwt:run-codeserver

OKでコンパイルされ、サーバーのURLが提供されます。この時点で、Webブラウザーでアプリを起動し、ブックマークレットを使用して再度コンパイルを試みます。この2回目のコンパイルでは、次のようなさまざまなメモリエラーが発生します。

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

また、OracleJDKとFedoraに付属のオープンソースJDKでも試してみました。

何も違いはありません。私はここで何が間違っているのですか?

アップデート

これはMavenプラグインの問題であり、コードの問題ではないことを確認できます。IntelliJの組み込みサポートであるSuperDevModeを使用してプロジェクトを実行すると、アプリケーションを正常にコンパイルおよび再コンパイルできます。つまり、これは、Mavenプラグインがアクセスできるメモリを増やす正しい方法を知ることになります。それは明らかに私が上で試した方法の1つではありません...

4

1 に答える 1

3

さて、これは私のせいでした。POM.XMLには、プロファイルに対してコンパイルするときに使用されるgwtプラグインの設定がいくつかあり、メモリ設定が正しく構成されていました。次に、プロファイルに関連付けられていないgwtプラグイン設定の別のセット(私は気づいていませんでした)がありました。

したがって、特定のプロファイル(アプリサーバー)用にコンパイルしていたときは、すべて問題ありませんでした。プロファイルで定義された設定が適用され、すべてが期待どおりに機能しました。しかし、プロファイルを設定せずにsuperdevmodeで実行すると、コマンドラインで設定していたものに加えて、2番目のあまり具体的でない設定が使用されていました。

-X結局、gwtプラグインによって実際に使用された構成をダンプするmavenフラグを使用して問題をデバッグしました。誰かが同じ問題を抱えている場合は、以下のサンプルのような出力を探してください。これから、最終的にどの設定が適用されたかを知ることができ、それを使用して、それがどこに設定されているかを見つけることができます。

[DEBUG] --- exit fork of org.jboss.pressgang.ccms:pressgang-ccms-ui:1.0-SNAPSHOT for org.codehaus.mojo:gwt-maven-plugin:2.5.1-rc1:run-codeserver (default-cli) ---
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal:          org.codehaus.mojo:gwt-maven-plugin:2.5.1-rc1:run-codeserver (default-cli)
[DEBUG] Style:         Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <bindAddress>${gwt.bindAddress}</bindAddress>
  <codeServerPort>${gwt.codeServerPort}</codeServerPort>
  <extraJvmArgs default-value="-Xmx1024m">-Xmx1024m</extraJvmArgs>
  <gen default-value="${project.build.directory}/.generated">${gwt.gen}</gen>
  <genParam default-value="true">${gwt.genParam}</genParam>
  <generateDirectory default-value="${project.build.directory}/generated-sources/gwt"/>
  <gwtSdkFirstInClasspath default-value="false">${gwt.gwtSdkFirstInClasspath}</gwtSdkFirstInClasspath>
  <inplace default-value="false">${gwt.inplace}</inplace>
  <jvm>${gwt.jvm}</jvm>
  <localRepository>${localRepository}</localRepository>
  <logLevel default-value="INFO">INFO</logLevel>
  <module>${gwt.module}</module>
  <persistentunitcache>${gwt.persistentunitcache}</persistentunitcache>
  <persistentunitcachedir>${gwt.persistentunitcachedir}</persistentunitcachedir>
  <pluginArtifacts>${plugin.artifacts}</pluginArtifacts>
  <project>${project}</project>
  <remoteRepositories>${project.remoteArtifactRepositories}</remoteRepositories>
  <style default-value="OBF">${gwt.style}</style>
  <version>${plugin.version}</version>
  <warSourceDirectory default-value="${basedir}/src/main/webapp"/>
  <webappDirectory default-value="${project.build.directory}/${project.build.finalName}">${gwt.war}</webappDirectory>
</configuration>
于 2013-03-07T04:37:03.630 に答える