tomcatメモリオーバーフローJava_optsを設定します
回答1
Tomcatスタートアップの最初のメモリを設定します
その初期空間(つまり、-XM)は物理メモリの1/64であり、最大空間(-XMX)は物理メモリの1/4です。 -XMN -XMS -XMXとJVMが提供するその他のオプションを使用できます
設定を作成します
3.例では、1Gメモリ環境でJava JVMのパラメーターを設定するための参照を示します。
java_opts = "-server -xms800m -xmx800m
-xx:permsize = 64m -xx:maxnewsize = 256m -xx:maxpermsize = 128m -djava.awt.headless = true "
java_opts = "-server -xms768m -xmx768m -xx:permsize = 128m -xx:maxpermsize = 256m -xx:
newsize = 192m -xx:maxnewsize = 384m "
catalina_opts = "-server -xms768m -xmx768m -xx:permsize = 128m -xx:maxpermsize = 256m
-xx:newsize = 192m -xx:maxnewsize = 384m "
Linux:
catalina.sh/usr/local/apache-tomcat-5.5.23/binディレクトリ
追加:java_opts = '-xms512m -xmx1024m'
「M」を追加したい場合、それはMBであることを意味します。そうでなければKBになり、Tomcatを開始するときにメモリが不十分になります。
-XMS:初期値
-xmx:最大値
-XMN:最小値
Windows
Catalina.batの前に参加してください
java_opts = -xms128m -xmx350mを設定します
start.batでtomcatを開始すると、OK設定が有効になります。 200mのメモリが正常に割り当てられます。
ただし、Startup.batを実行してTomcatを起動していないが、Windows System Serviceを使用してTomcatサービスを開始する場合、上記の設定は有効になりません。
つまり、set java_opts = -xms128m -xmx350mは機能しません。上記の200mのメモリを割り当てると、OOMになります...
WindowsサービスはBin/tomcat.exeを実行します。カタリナではなく、レジストリの値を読み取ります。
解決:
レジストリhkey_local_machine/software/apacheソフトウェアファンデーション/tomcatサービスマネージャー/tomcat5/parameters/javaoptionsを変更します
元の値はです
-dcatalina.home = "c:/apachegroup/tomcat 5.0"
-djava.endorsed.dirs = "c:/apachegroup/tomcat 5.0/common/endorsed"
-xrs
-xms300m -xmx350mを追加します
Tomcatサービスを再起動すると、設定が有効になります
回答2
TomcatのJVMメモリオーバーフロー問題ソリューション
キーワード:TomcatのJVMメモリオーバーフロー問題ソリューション
最近、私は数年間開発されてきたプロジェクトに精通しています。データベースをMySQLからOracleに移植する必要があります。まず、JDBC接続をMySQLに向け、Tomcatにパッケージ化して実行します。問題はありません。ただし、JDBC接続をOracleに向けると、Tomcatはjava.lang.outofmemoryerrorエラーを継続的にスローします。参照のために共有してください。
1。最初は:java.lang.outofmemoryerror:Java Heap Space
説明する:
ヒープサイズの設定
JVMヒープの設定は、JVMがJavaプログラムの実行中に提供できるメモリスペースの設定を指します。 JVMが起動すると、ヒープサイズの値が自動的に設定されます。その初期空間(つまり、-XM)は物理メモリの1/64であり、最大空間(-XMX)は物理メモリの1/4です。 -XMN -XMS -XMXとJVMが提供するその他のオプションを使用して設定できます。ヒープサイズのサイズは、若い世代と終身系の属の合計です。
ヒント:GCに98%の時間が使用され、利用可能なヒープサイズが2%未満である場合、この例外メッセージはスローされます。
ヒント:最大ヒープサイズは、利用可能な物理メモリの80%を超えてはなりません。一般に、-XMNは-XMN値の-XMX値の1/4ですが、-XMSおよび-XMXオプションを同じに設定します。
解決:
ヒープサイズを手動で設定します
tomcat_home/bin/catalina.batを変更し、Catalina_baseを使用して「echo」に次の行を追加します:$ catalina_base ":
Javaコード
set java_opts =%java_opts%-server -xms800m -xmx800m -xx:maxnewsize = 256m
set java_opts =%java_opts%-server -xms800m -xmx800m -xx:maxnewsize = 256m
またはCatalina.shを変更します
Catalina_baseを使用して「echo」に次の行を追加します:$ catalina_base ":
java_opts = "$ java_opts -server -xms800m -xmx800m -xx:maxnewsize = 256m"
2。第二に:java.lang.outofmemoryerror:permgenスペース
理由:
Permgenスペースのフルネームは、メモリの永久保管エリアを指す永久生成スペースです。このメモリは、主にクラスおよびメタ情報のJVMによって保存されます。クラスは、ロードされるとPermgenスペースに配置されます。クラスインスタンス(インスタンス)が保存されているヒープ領域とは異なります。 GC(Garbage Collection)は、メインプログラムのランタイム中にPermgenスペースをクリーンアップしません。したがって、アプリケーションに多くのクラスがある場合、Permgenスペースエラーが発生する可能性が非常に高いです。このエラーは、Webサーバーがjspを事前にコンパイルする場合に一般的です。 Webアプリの下で多数のサードパーティのジャーを使用すると、サイズがJVM(4M)のデフォルトサイズを超えると、このエラーメッセージが生成されます。
解決:
1. MaxPermsizeサイズを手動で設定します
Javaコードで、tomcat_home/bin/catalina.bat(catalina.sh under linux)を変更します
catalina_baseを使用した「エコー」:$ catalina_base ""次の行を追加します。
set java_opts =%java_opts%-server -xx:permsize = 128m -xx:maxpermesize = 512m
catalina_baseを使用した「エコー」:$ catalina_base ""次の行を追加します。
set java_opts =%java_opts%-server -xx:permsize = 128m -xx:maxpermesize = 512m
Catalina.shは次のとおりです。
Javaコード
java_opts = "$ java_opts -server -xx:permsize = 128m -xx:maxpermesize = 512m"
java_opts = "$ java_opts -server -xx:permsize = 128m -xx:maxpermesize = 512m"
また、別の投稿を見て、とても良いと思いました。抜粋は次のとおりです。
分析java.lang.outofmemoryerror:permgenスペース
多くの人が問題を動的に生成し、JVMの永続的なヒープをオーバーフローするため、春、冬眠、トムキャットに起因することがわかりました。次に、ソリューションにはさまざまな意見があります。一部の人々は、Tomcatバージョンを最新のものにアップグレードすることは必要ではないと言う人もいます。一部の人々は、春の問題を疑っていますが、春のフォーラムでは非常に暑いです。なぜなら、AOPが多くのクラスを動的に生成する春にCBLIBを使用するからです。
しかし、問題は、なぜこれらのトランプカードのオープンソースで同じ問題が発生するのかということです。それがより基本的な理由ですか? Tomcatは、Q&Aで非常にあいまいな方法でこれに答えました。私たちはこの質問を知っていますが、この質問はより基本的な質問から生じます。
そのため、誰かがより基本的なJVMをチェックし、問題の鍵を見つけました。 SunのJVMはメモリをさまざまな領域に分割します。その1つは、多くのクラスとクラスの説明を保存するためのPermenterエリアです。もともと、Sunが設計されたとき、JVMが開始されたときにこの領域が固定されたと信じられていましたが、彼はダイナミクスが現在広く使用されているとは期待していませんでした。さらに、この領域には特別なごみ収集メカニズムがあります。現在の問題は、クラスをこのエリアに動的にロードした後、GCがリサイクルできないことです。
上記の2つの質問については、私の取り扱いは次のとおりです。
Catalina.batの最初の行を追加します:
Javaコード
java_opts = -xms64m -xmx256m -xx:permsize = 128m -xx:maxnewsize = 256m -xx:maxpermsize = 256m
java_opts = -xms64m -xmx256m -xx:permsize = 128m -xx:maxnewsize = 256m -xx:maxpermsize = 256m
Catalina.shの最初の行を追加します:
Javaコード
java_opts =
-xms64m
-xmx256m
-xx:permsize = 128m
-xx:maxnewsize = 256m
-xx:maxpermsize = 256m
上記の記事でTomcatメモリオーバーフローに対する完璧なソリューションは、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。