LSI でコードを実行していますが、最初にデータベースから大量のデータをフェッチする必要があります。小さなデータセットでは問題なく動作しています。データセットを増やすと、次のエラーが発生します。
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
現在、2 GB の RAM を搭載したシステムでコードを実行しています。RAM容量に関連するエラーか、それとも別の原因によるエラーか。
ありがとう!
LSI でコードを実行していますが、最初にデータベースから大量のデータをフェッチする必要があります。小さなデータセットでは問題なく動作しています。データセットを増やすと、次のエラーが発生します。
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
現在、2 GB の RAM を搭載したシステムでコードを実行しています。RAM容量に関連するエラーか、それとも別の原因によるエラーか。
ありがとう!
Javaを実行するときは、特定の懸念事項のためにVMパラメーターを渡す必要があります。ヒープ値を増やす必要があります。
-Xms40m - minimum heap size in MB
-Xmx1024m - maximum heap size in MB
java test.java -Xms40m -Xmx1024m
アプリを起動するとき。詳細については、Oracleのドキュメントを参照してください。または、Eclipseを使用する場合は、ecliplse.ini
ファイル内のこのサイズを増やしてください。
最初に、サーバーに割り当てたヒープ スペースの量を確認します。低いと思われる場合は、次のパラメーターを使用して増やすことができます-
-Xms128m - minimum heap size in MB
-Xmx1024m - maximum heap size in MB
通常、使用可能な hep サイズがいっぱいになり、プログラムの通常の実行に使用できるメモリがなくなると、この例外が発生します。
RAMに関連する場合、プロセッサはJavaを停止します。絶対にそうではありません。これは、 Java ヒープ メモリがいっぱいで、ヒープ スペース内のすべてのオブジェクトがアクティブであるため、ガベージ コレクション プロセスが実行されないためです。そのため、さらにデータを処理するための十分なメモリがヒープ領域にありません。この理由で、このエラーが発生します。
アプリケーションが持つことができる最大ヒープ サイズを増やすだけでなく (これだけで十分かもしれません)、使用しているメモリの量を大幅に減らすことができるようです。ドキュメントをインデックス化する場合、標準の LSI セットアップでは、一度に 1 つのドキュメントしかメモリにロードできないはずです。たとえば、ドキュメントのリストがあるとします。リストをループして、ロード、インデックス、クローズします。すすいで繰り返します。
あなたのコードは小さなデータセットで動作するので、これがあなたの問題かもしれないと思っています。もう 1 つの可能性は、データ セットを拡張するときに、すべてのヒープ スペースを使い果たす巨大なドキュメントを含めることです。その場合、最も簡単な解決策はヒープ領域を増やすことです。
重要な点は、両方の構文で大文字と小文字が区別されることです。とても注意してください。
TomcatでJavaヒープサイズを設定するには? 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"
EclipseでJavaヒープサイズを設定するには? 2 つのオプションがあります。 1. eclipse-home/eclipse.ini を次のように編集し、Eclipse を再起動します。
-vmargs-Xms64m-Xmx256m2. または、最後に追加オプションを指定して eclipse コマンドを実行することもできます。-vmargs より後のものはすべて JVM オプションとして扱われ、JVM に直接渡されます。このようにコマンド ラインで指定された JVM オプションは、常に eclipse.ini のオプションをオーバーライドします。例えば、
日食 -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
疑問がある場合は、以下のリンクを参照してください。詳細を提供してくれてありがとう。