1.JVM(Java仮想mechinal)
(1 )JVMサウンドハードウェア・アーキテクチャを、そのようなプロセッサ、スタックとして、また、対応する命令と、として登録します。 (2ときJVM独自の命令セット(すなわち、バイトコード)の主な仕事説明)、およびローカルまたはOSのシステムコール命令のCPUのセットにマップ。
面積法からなる2.JVM仮想マシンメインヒープ、スタック、ネイティブメソッドスタック、
注:( データ構造)を配列にヒープとスタックデータ項目の一種であり、一端のみにデータ項目を挿入し、削除します。 (2 )マイクロコントローラ・アプリケーションに、スタックは特別な記憶領域であり、主な機能は、一時的にデータおよびアドレスを格納すること、およびエンドポイントフィールドは、一般的に保護するために使用されます。 (3 )スタック、FIFOをキューに入れます。 (4)スタック、最終。(1)ヒープ
1 -ヒープに割り当てられたメモリは、ヒープ・サイズは、マルチパス-Xmxとされるかもしれない)すべての新しい新しいオブジェクト制御のXms。 2 )ヒープは新世代と旧世代に分かれています。 3 )新世代は、さらにエデンとサバイバーの領域に分割されています。 。4)空間と組成物からスペースへのサバイバー。1 )新世代は、新しいオブジェクトがメモリの新しい世代によって割り当てられます。 2 )場合エデン十分なスペース、サバイバーにおけるオブジェクトの生存に転送されます。 3)新世代-Xmnの大きさによって制御することができる、それを使用することもできる-XX:SurvivorRatioはエデンとサバイバーの比率を制御します。1)いくつかのガベージコレクションの後、新世代内のオブジェクトを格納するために使用される古い世代は、まだ生きています。
1 )永続的(パーマネントスペース)実装ゾーン、全てロードされたクラス情報の主記憶装置、情報法、定数プールを有します。 2)-XXによって:PermSizeをと- XXは初期値で永続的な最大MaxPermSizeを指定します。 3 )常設スペースが唯一の方法で面積を実装するために、常設スペースでちょうどHostspot JVM同じメソッド領域ではありません。 4)いくつかの仮想マシンを永続的スペースを持たず、他のメカニズムによる方法の面積を実装します。-Xmx #最大ヒープメモリ -Xms #初期メモリヒープ MaxNewSize:-XX #ヤング最大メモリ領域 -XX:NewSizeパラメータ 最初にメモリの#若い領域、通常Xmxの1/3または1/4。 #= 2つのサバイバースペースのエデン+ 2新世代。 #=エデン+ 1番目のサバイバー使用可能な実際の空間、すなわち90%です。
-XX:MaxPermSizeを してメモリを持続#最大 -XX:PermSizeをの 初めにメモリを持続# -XX:+ PrintGCDetails #のGC印刷情報 -XX:NewRation #1歳の比率と新世代 #例:-XX:NewRetio = 2、その後、 2/3のための高齢者の会計とヒープ領域の1/3まったく新しい世代、; -XX:SurvivorRatio #エデン新世代のサバイバー比で。デフォルトでは、新世代8/10 1/10半分二サバイバーを表す、すなわち、エデンスペース、8です。
(2)スタック
1 )各メソッドの実行の各スレッドは、スタック上のスタックフレームを適用する場合。 2 )ローカル変数とオペランドスタック、通話中に一時変数パラメータおよび中間結果を格納するための方法を含む各スタックフレーム。 3)-Xss:セット各スレッド・スタックは、大文字.JDK1。5 +スタックは非常に深いない場合は、1Mに大文字各スレッド・スタックは、1Mで十分です。(3)ネイティブメソッドスタック
1)各ネイティブメソッド呼び出しのステータスを格納するネイティブ実行方法のサポート。
(4)メソッド領域
1 )クラス情報は、静的変数、定数の最終的なタイプ、プロパティおよびメソッドの情報をロードするために記憶されます。 2)-XXによって、永続ストレージゾーン方式でJVMを持って:PermSizeをと-XX:最小値と最大値MaxPermSizeを指定。1 )通常のJavaオブジェクトエデンの地区で生まれた新世代を、エデンゾーン時に新生児のオブジェクトも、オブジェクトAサバイバーエリアに転送されます。 2 )サバイバー領域は地域から分割し; 3 )対象からAは時々領域に、領域であってもよいです。 4 )特定の時間の後、オブジェクトは、古いA者に転送されます。 5)ターゲットが一定時間に達すると、それは昔のJavaで回収されます。
3.tomcatのパフォーマンスの最適化
1 )Linuxカーネル最適化 2 )サーバのリソースの割り当てを最適化 3 )パラメータ最適化Tomcatの 4クラスタの負荷の割り当てを最適化)プロファイルパラメータの最適化は、 (1 )、DNSクエリをオフに同時の最大数を設定し、 (2 )maxThreadsの:スレッドのタスクの最大数の数Tomcatのと同時に、そのプロセスを開始し、デフォルトは200であり、 (3 )acceptCountを:スレッド数は、Tomcatを開始しましたキューに入れられた要求受付の最大数は、デフォルト値は100である場合、 (4)これらの値は、良好でない実際の状況に応じて調整することができます。< コネクタポート= "8080" プロトコル= "org.apache.coyote.http11.Http11NioProtocol" のConnectionTimeout = "20000" にredirectPort = "443" maxThreadsの= "5000" minSpareThreads = "20" acceptCountを= "10000" disableUploadTimeout = "true"に enableLookups = "false"に はURIEncoding = "UTF-8" />サーバーのメモリ128Gに適した構成の上# #注釈パラメータ: プロトコル=「org.apache.coyote.http11.Http11NioProtocol」 #調整モード仁王 のConnectionTimeout =「20000」 しないように#接続タイムアウトをミリ秒単位で、0は、現在の調整を制限します20代のために。 =にredirectPort「443」 #ユーザーのhttpがリソースを要求し、リソース自体がhttpsにアクセスするように設定されている必要があり、その後、Tomcatは自動的にHTTPSポートにredirectPort設定にリダイレクトされます。 です。maxthreads「5000」= スレッドのより#最大数、スレッド占有の数は、より多くのメモリとCPU使用率がします minSpareThreads =「20」 アイドルスレッドの#の最小数を acceptCountを=「10000」 #が最大を要求し、10,000人以上のクライアントを受け付けます要求は、それは、キュー内の要求を渡します。 「真の」= disableUploadTimeout #アップロードタイムアウトを無効にする 「偽の」enableLookups = #はの応答時間向上させるために、DNS解決を閉じて はURIEncoding =「UTF-8」 文字セットがUTF-8で設定#を
4.JVMパラメータ調整vimのビン/ catalina.shまたはvimの/ etc / profileを、プロファイル設定は、輸出環境を追加します
CATALINA_OPTS = " $ CATALINA_OPTS -Xms512M -Xmx1024M -Xmn100M -XX:SurvivorRatio = 4 -XX:+ UseConcMarkS weepGC -XX:CMSInitiatingOccupancyFraction = 82 -DLOCALE = UTF-16LE -DRAMDISK = / -DUSE_RAM_DISK = トゥーレ -DRAM_DISK = 真 -Djava。 。rmi.server ホスト名 = 192.168。111.128 - Dcom.sun.management.jmxremote.port = 10000 -Dcom.sun.management.jmxremote.ssl = falseを -Dcom.sun.management.jmxremote.authenticate = 偽"
-Xms <サイズ> #初期化JVMヒープ・サイズを表す:オープンJavaプログラムメモリが初期開口占有 -Xmx <サイズ> #は、JVMヒープの最大値を示す:メモリは、最大開口手順によって占めた後に アプリケーションのニーズに応じて#2以上のパラメータをメモリは最大のXmxのを超えた場合、必要な調整は、一般的にメモリのオーバーフローは、プログラムがクラッシュします求められます。 この値は通常、現在のメモリ80%に設定されている-Xmx#推奨; -Xmnの #は若いバンドのメモリサイズは、メモリの3/8ヒープ全体の設定をお勧めことを示しています。