Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> Linux /centosはTomcatのメモリオーバーフローを解決します

Linux /centosはTomcatのメモリオーバーフローを解決します

  
Tomcat自体はコンピュータ上で直接実行することはできません、それはオペレーティングシステムとJAVA仮想マシンに依存します。 JAVAプログラムが起動すると、JVMはAPPに初期メモリと最大メモリを割り当てます。 APPが必要とするメモリが最大メモリを超えると、仮想マシンはメモリオーバーフローを促し、アプリケーションサービスをクラッシュさせます。まず、一般的なJavaメモリー・オーバーフローには、次の3つがあります。

1. java.lang.OutOfMemoryError:Javaヒープ・スペースJVMヒープ・オーバーフロー
説明:JVMは、開始時に自動的にJVM Heapの値を設定します、JVMヒープ設定とは、Javaプログラムの実行中にJVMが使用できるメモリースペースの設定を指します。初期スペースはデフォルトで物理メモリの1/64になり、最大スペースは物理メモリを超えることはできません。 JVMは設定のために-Xmn -Xms -Xmxのようなオプションを提供します。エラーシナリオ:JVMで、98%の時間がGC用で、使用可能なヒープサイズが2%未満の場合、JVMヒープオーバーフローの解決が発生します。JVMヒープのサイズを変更します。 2. java.lang.OutOfMemoryError:PermGenスペース、つまりPermGenスペースがオーバーフローしました

説明:PermGenスペースは、メモリの永久記憶領域を参照しています。この領域には主にClassとMetaの情報が格納され、Classはロード時にPermGenスペースに配置されます。
エラーシナリオ:アプリが大量のCLASSをロードすると、PermGenスペースオーバーフローが発生することがあります。 (プログラムの実行中にsunのGCはPermGenスペースをクリーンアップしないため)WebサーバーがJSPをプリコンパイルするとき一般的に解決策:MaxPermSizeサイズ

3を変更します。java.lang.StackOverflowErrorスタックオーバーフロー
説明:JVMは仮想マシンのスタックを使用し、関数の呼び出しプロセスはスタックとアンスタックに反映されます。エラーシナリオ:通常、スタックのサイズは1〜2MBですコンストラクタの "layer"が多すぎる場合は、スタックオーバーフローの解決策があります:プログラムを変更します2. TomcatのJVMメモリオーバーフローの解決策は、運用環境にあります。 Tomcatのメモリ設定は、JVMメモリのオーバーフローが発生しにくく、解決策はTomcatのcatalina.shファイルを変更することです。

catalina.shファイルでcygwin = falseを見つけ、次のようにこの行の前にパラメータを追加します。
#vi TOMCAT_HOME /bin /catalina.shJAVA_OPTS =" -server -Xms800m -Xmx800m -XX:PermSize = 256m -XX:MaxPermSize = 512m -XX:MaxNewSize = 512m"その他の注:1." m"説明単位はMBです。それ以外の場合、デフォルトはKB2です。通常、ヒープサイズ3として物理メモリの80%を使用します。 4. -Xmnは-Xmxと同じ大きさに設定されます4.通常、-Xmnは-Xmx値の1/4に設定されます一般的に、ヒープの合計サイズの50%から60%を新しく生成されたプールに割り当てます。最初のパラメータになるには、JDKサーバーのバージョンを有効にします。これは、複数のCPUで正常に動作します(Xms java Heapの初期サイズ)。デフォルトは物理メモリの1/64です。 -Xmx javaヒープ最大。推奨値は物理メモリの80%に設定されています。物理メモリを超えないでください。 -Xmn Javaヒープの最小値。通常はXmxの3または4に設​​定されます。 -XX:PermSizeメモリの永久保存領域の初期サイズを設定しますデフォルト値は64Mです。 -XX:MaxPermSizeメモリの永久保存領域の最大サイズを設定しますデフォルト値は64Mです。 -XX:SurvivorRatio = 2サバイバープールのサイズデフォルトは2です。例えば、-XX:NewSize新しく生成されたプールの初期サイズ。デフォルトは2Mです。 -XX:MaxNewSize新しく生成されたプールの最大サイズ。デフォルトは32Mです。 + XX:AggressiveHeap jvmにXmxパラメータを無視させ、必然的にGの物理メモリを食べさせてからGのスワップを食べさせます。 -Xssスレッドごとのスタックサイズ - 詳細:gc現実的なガベージコレクション情報 - Xloggc:gc.logガベージコレクションログファイルを指定します。-XX:+ UseParNewGCマイナーコレクション時間を短縮します。-XX:+ UseConcMarkSweepGCメジャーコレクション時間を短縮します。-XX: userParNewGCを使用して並列収集を設定できます(複数CPU) - XX:ParallelGCThreadsを使用して並列処理を向上させることができます(複数CPU) - XX:UseParallelGCを使用して並列クリーンアップコレクターを使用できます(複数CPU)

Copyright © Windowsの知識 All Rights Reserved