2

組み込みの Glassfish に Maven プラグインを使用しています。プラグインの宣言は次のとおりです。

<plugin>
  <artifactId>maven-glassfish-plugin</artifactId>
  <packaging>maven-plugin</packaging>
  <version>1.0-alpha-4</version>
  <configuration>
    <httpPort>8080</httpPort>
  </configuration>
</plugin>

データ集約型の Web アプリを数回クリックした後、PermGen スペースが不足しました。

java.lang.OutOfMemoryError: PermGen スペース

より多くのメモリを使用するように MAVEN_OPTS を既に構成しています。

set MAVEN_OPTS=-Xmx1024m

しかし、生成された Java プロセスは、mvn glassfish:run約 0.5 ギガバイトのメモリしか確保できていないようです。

Glassfish プラグインには、メモリを増やすための構成設定がありますか?

ありがとう!

4

2 に答える 2

10

明確にするために。永久世代空間には、ロードされたクラス オブジェクトとインターンされた文字列が含まれます。以下に示すように、Java ヒープの外側に割り当てられます。

代替テキスト

最近の Sun VM では、デフォルトの最大サイズは64m(つまり-XX:MaxPermSize=64m) であり、ほとんどのアプリケーションに適しています (問題は、ここでの頻繁なアンデプロイ/再デプロイに関連している可能性が非常に高いです)。-XX:MaxPermSize=128m私はとにかくor-XX:MaxPermSize=256mで試してみますが、1024m本当に特大のようです!

于 2010-06-04T15:47:00.693 に答える
5

何人かの同僚とさらに相談した後、私はMavenで間違ったメモリ値を増やしていたようです。

PermGenスペースを増やすために、これをMAVEN_OPTSに追加しました。

set MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=1024m
于 2010-06-04T14:44:09.057 に答える