web-dev-qa-db-ja.com

java.lang.OutOfMemoryError:Java NetBeansのヒープスペース

これは、NetBeansによって開始されたTomcatサーブレットコンテナのインスタンスでWebアプリケーションを実行すると発生するエラーです。これを修正するために、netbeans.confのヒープサイズを変更しましたが、それでも同じエラーが表示されます。これを防ぐにはどうすればよいですか?

 HTTPステータス500-
 
 ------------------------------- ------------------------------------------------- 
 
 type Exception report 
 
 message 
 
 descriptionサーバーで内部エラー()が発生したため、このリクエストを実行できませんでした。 
 
例外
 
 javax.servlet.ServletException:サーブレットの実行で例外がスローされました
 org.netbeans.modules.web.monitor.server.MonitorFilter .doFilter(MonitorFilter.Java:362)
 
 
根本原因
 
 Java.lang.OutOfMemoryError:Javaヒープspace 
 
 note根本原因の完全なスタックトレースは、Apache Tomcat/5.5.9ログで確認できます。
15
divya

Netbeans.confのヒープサイズを変更しても、NetBeans自体のヒープのみが変更され、NetBeansを介して実行されるアプリケーションは変更されません。

正しい方法は、プロジェクトを右クリックして[プロパティ]を選択し、次に[実行]を選択することです。そこでVMオプションを適切に設定できます(-Xmx256m、 例えば)。次のようになります。

setting the heap size
(この写真を見つけてくれてありがとう VonC

30
Michael Myers

Tomcatサーバーを停止し、環境変数CATALINA_OPTSを設定してから、Tomcatを再起動します。ファイルTomcat-install/bin/catalina.shまたはcatalina.batこの変数の使用方法。例えば、

set CATALINA_OPTS="-Xms512m -Xmx512m" (Windows)export CATALINA_OPTS="-Xms512m -Xmx512m" (ksh/bash)setenv CATALINA_OPTS "-Xms512m -Xmx512m" (tcsh/csh)

catalina.batまたはcatallina.sh、お気づきかもしれませんが、CATALINA_OPTS、Java_OPTS、またはその両方を使用して、Tomcat JVMオプションを指定できます。

CATALINA_OPTSとJava_OPTSの違いは何ですか?

CATALINA_OPTSという名前はTomcatサーブレットコンテナに固有ですが、Java_OPTSは他のJava=アプリケーション(JBossなど)によって使用される場合があります。環境変数はすべてのアプリケーションによって共有されるため、Tomcatに他のアプリ向けのJVMオプションを誤って選択してしまったため、CATALINA_OPTSを使用したい。

JBossでJavaヒープサイズを設定する方法は?

JBossサーバーを停止し、$ JBOSS_HOME/bin/run.confを編集してから、JBossサーバーを再起動します。 Java_OPTSの行を次のように変更できます。

Java_OPTS="-server -Xms128m -Xmx128m"

Javaヒープサイズを設定する方法は?2つのオプションがあります。

  1. Eclipse-home/Eclipse.iniを次のように編集して、Eclipseを再起動します。

    -vmargs-Xms64m-Xmx256m

  2. または、最後に追加オプションを指定してEclipseコマンドを実行することもできます。 -vmargs以降はJVMオプションとして扱われ、JVMに直接渡されます。この方法でコマンドラインで指定されたJVMオプションは、常にEclipse.iniのオプションをオーバーライドします。例えば、

    Eclipse -vmargs -Xms64m -Xmx256m

NetBeansでJavaヒープサイズを設定する方法は?

NetBeansを終了し、netbeans-install/etc/netbeans.confファイルを編集します。例えば、

netbeans_default_options="-J-Xms512m -J-Xmx512m -J-XX:PermSize=32m -J-XX:MaxPermSize=128m -J-Xverify:none

Apache AntでJavaヒープサイズを設定する方法は?

環境変数ANT_OPTSを設定します。ファイル$ANT_HOME/bin/antまたは%ANT_HOME%\bin\ant.bat、この変数がAntランタイムでどのように使用されるか。

set ANT_OPTS="-Xms512m -Xmx512m" (Windows)export ANT_OPTS="-Xms512m -Xmx512m" (ksh/bash)setenv ANT_OPTS "-Xms512m -Xmx512m" (tcsh/csh) 
9
Rakesh

Tomcatサーバーの仮想メモリを増やす場合、問題はありません。

手順:

  1. NBウィンドウメニューを移動して、サービスを追加します
  2. Tomcatはサービスにあります。 Tomcatサーバーを右クリックし、[プロパティ]を選択します
  3. プロパティでプラットフォームに移動し、-Xms512m in VM optionsフィールド
7
Alok

メモリを増やしても問題は解決しないと思います。 MonitorFilterは何をしていますか?その記憶を何が食べているのですか?

あなたの最善の策はそれを理解することです。これがWebアプリの場合は、そのフィルターをオフにして、それなしで実行できるかどうかを確認してください。成功した場合は、MonitorFilterが原因でが失敗することがわかります。

5
duffymo

これはNetBeans(おそらく)とは関係ありませんが、Tomcatと関係があります。 Tomcatは、NetBeansではなく、ヒープが不足しているプロセスです。 Tomcatの起動プロセスを追跡します。 NBにバンドルされている場合、TomcatはNBインストールに埋め込まれています。 "enterpriseN"ディレクトリを確認してください。Nは数字です。Tomcatはおそらくそこにあり、かなり一般的なディストリビューションです。

モニターがOOMで実行される理由については、言うのは難しいですが、考えると、それは非常に単純なプロセスです。 HTTPモニタリングを無効にして、モニタリング自体の問題か、アプリケーションの問題かを確認することもできます。

3
Will Hartung