JVMパラメータ

JAVA_OPTS = " -server -Xms2048m -Xmx2048m -Xmn512m -Xss256k -XX:PermSizeを= 256メートル-XX:MaxPermSizeを= 256メートル-XX:SurvivorRatio = 8 -XX:+ UseConcMarkSweepGCを-XX:+ UseParNewGC 
-XX:+ UseCMSCompactAtFullCollection -XX:+ CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction = 70 -Dcom.sun.management.jmxremote -Dcom.sun.management.snmp.port = 8044 
-Dcom.sun.management.jmxremote.ssl = falseを-Dcom.sun.management.jmxremote.authenticate =偽"

これは、当社のサーバーライン(4G 2C)に設定されています

  • 初期ヒープ:-XX:InitialHeapSize = 2048メートル(-Xms2048m - 速記)
  • 最大ヒープ-XX:MaxHeapSize = 2048メートル(-Xmx2048m - 速記)
  • 若い世代のサイズを設定します - Xmn512m。 
  • スレッドのスタックサイズ:-Xss256k:各スレッドスタックサイズは256Kアプリケーションを調整するメモリサイズの複数のスレッドを必要とされる前に、各スレッドのスタックサイズ.JDK5.0を設定した後、各スレッドのスタックサイズは、1Mです。この値はより多くのスレッドを生成することができる還元同じ物理メモリ、まだ限らプロセス内のオペレーティング・システムのスレッドの数ではなく、無制限の世代の下で、3000と5000の経験。
  • ヒープの初期化永久代わっ:-XX:PermSizeを= 512メートル
  • ヒープの最大永久代わっ:-XX:MaxPermSizeを
  • 領域エデンサバイバー領域の大きさの比:8、サバイバー:-XX :. SurvivorRatio = 8エデンサバイバー若い世代領域の面積比の大きさを設定は8に設定されている、サバイバーエデンゾーンを有する2つの領域の比は2 1/10の若い世代の総面積
  • 若い世代と古い時代の比率:-XX :. NewRatio = 4(エデンと2つのサバイバー領域を含む)若い世代を配置され、(永久世代を除く)、旧世代の比率が4に設定され、その後、若い世代と旧世代4、スタック全体の1/5のために若い世代のアカウント:割合は1であります
  • 古いのガベージコレクタ:CMS(並行マークスイープ)同時マークのクリーンアップコレクター:CMS(-XX:+ UseConcMarkSweepGCを)古いコレクターの使用中、メイン回復に到達することは不可能これらの古いオブジェクトを収集します。これは、古い世代で開催されたアプリケーションは、若い世代がプロモーションの失敗のために発生していないことを保証するために十分なスペースを持っていると同時に実行されます。
  • -XX:CMSFULLGCsBeforCompaction = 5:同時コレクタはいくつかの時間のために実行されているが、低い動作効率を作り、「断片化」を持つことになりますので、並べ替え、メモリを圧迫しませんので。この値は、仕上げ、何回ハウスのための空間圧縮後のGCを実行するように設定されています。
  • -XX:+ UseCMSCompactAtFullCollection:旧世代のオープン圧縮。パフォーマンスが影響を受ける可能性がありますが、破片を除去することができます。
  • 第二の休止時間を短縮するために、オープン平行備考:-XX:+ CMSParallelRemarkEnabled
  • 処刑のCMSの数:CMSがデフォルトの古い世代であるが成長の古い世代はそれほど速くない、とあなたはCMSの数を減らしたい場合は、この値を大きくすることが適切なことができ、CMSの収集を開始する時間の68%をカバーした。-XX: CMSInitiatingOccupancyFraction = 80
  •  若い世代のガベージコレクタ:-XX:+ UseParNewGC:若い者に代わって並列コレクタを設定します。CMSを収集し、同時に使用することができます。JDK5.0上、JVMは、システム構成に応じてそれ自体を構成するであろう、それはこの値を設定する必要がありません。
Javaの-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+ UseConcMarkSweepGCを-XX:CMSFULLGCsBeforCompaction = 5 -XX:+ UseCMSCompactAtFullCollection

ごみの年齢設定:

-XX:MaxTenuringThreshold = 0:0に設定するとゴミの最大の年齢を設定し、それから、直接、より多くのアプリケーションの古い世代に旧世代へのサバイバー領域のないオブジェクトの若い世代は、この値があれば、効率を向上させることができます...大きな値に設定し、その後、若い世代のオブジェクトは、オブジェクトを増加させ、その後、生存期間の若い世代は、若い世代のIEの回復の確率を高めることができ、サバイバー領域に何回もコピーされます

リサイクルの選択

シリアルコレクタ、コレクタ並列、同時コレクタが、シリアルコレクターだけ少量のデータに適用されるので、選択は、デフォルトでは本質的に平行コレクタと同時コレクタ懸念している:JVMは、3つの選択肢を与えています。あなたが他のコレクターを使用したい場合は、次の、すべてのシリアルJDK5.0コレクター前に、以降の起動は、JVMは、現在のシステム構成に応じて決定されます.JDK5.0適切なパラメータを追加する必要があります。特定の優先順位の並列コレクタを選択。

また、独自に設定することができます。

まだ収集されたシリアルの古い世代を使用しながら、ガベージコレクタを選択すると、上記の設定の下で効果的であるだけで、若い世代の並列コレクタ構成で、若い世代の同時コレクションは、...:-XX:+ UseParallelGC
-XX:= 20 ParallelGCThreadsです:スレッドの数、すなわち、並列コレクタを配置:この値に沿って多くのガベージコレクションスレッドが配置されたプロセッサの数に等しいことが好ましいています。

JVMパラメータを印刷

-XX:+ PrintGC
出力フォーマット:[GC 118250K-> 113543K(130112K)、0.0094143秒] 
[完全GC 121376K-> 10414K(130112K)、0.0650971秒]

-XX:+ PrintGCDetails
输出形式:[GC [DefNew:8614K-> 781K(9088K)、0.0123035秒] 118250K-> 113543K(130112K)、0.0124633秒] 
[GC [DefNew:8614K-> 8614K(9088K)、0.0000665秒] [終身:112761K-> 10414K(121024K)、0.0433488秒] 121376K-> 10414K(130112K)、0.0436268秒]

-XX:+ PrintGCTimeStamps -XX:+ PrintGC :PrintGCTimeStamps 上記使用される二つと混合することができる
出力形式:11.851:[GC 98328K-> 93620K (130112K)、0.0082960秒]

GCログファイルの回転が設けられている、5圧延の数は、ファイルサイズ200Mをログファイルパス/home/admin/logs/gc.logログ。

-XX:+ :. PrintGCApplicationConcurrentTime各印刷ガベージコレクションの前に、割り込みプログラムの実行時間は、上記と組み合わせて使用することができるではない
出力形式:アプリケーション時間:0.5291524秒

-XX:+ガベージコレクション時間を印刷時にプログラムを一時停止:. PrintGCApplicationStoppedTimeは、上記と組み合わせて使用することができる
形式で出力:アプリケーション・スレッドがされたの合計時間停止:0.0468229秒

-XX:PrintHeapAtGC:スタックの詳細については、前とGCを印刷した後、

例えば:

-XX:+ PrintGCDetails -XX:+ PringGCDateStamps -XX:+ UseGCLogFileRotation -XX:NumberOfGCLogFiles = 5 -XX:GCLogFileSize = 200M 
-Xloggc:/home/admin/logs/gc.log

 

異常なスナップショットメモリオーバーフローを印刷

-XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = D:\ oom.dump

 

JDK1.8の最適化について

素子間隔は、ホットスポットJVMなどのストレージクラスのメソッド主情報のメソッド領域、定数プール、データの方法、コードの実装領域です。この方法は、論理的にスタック領域の一部であるが、スタックを区別するために、一般的に知られているように、「非ヒープ。」メタスペース恒久的性質と類似に、メソッド領域のJVM仕様を達成しています。しかし、それに代わって元と永久スペースの最大の違いに:元は、仮想マシン内のスペースはありませんが、ローカルメモリを使用します。理論的には64分の32ビット仮想メモリシステムのサイズに依存します。目に見えるが無制限ではありません、あなたはパラメータを設定する必要があります。

1.MetaspaceSize

  -XX:MetaspaceSize:メタスペースのサイズの初期化、GC制御閾値メタスペースの発生。GC後、動的MetaspaceSizeを増減させます。デフォルトでは、この値は浮動12Mに20Mに応じて異なるプラットフォームの大きさです。

2.MaxMetaspaceSize

  -XX:MaxMetaspaceSize:上限メタスペースの成長は、いくつかのケースではメタスペースにつながるので、ローカルメモリの無制限の使用を防ぐため、他のプログラムに影響を与えます。デフォルトのパラメータのマシンでは(4096メガバイト程度)4294967295Bです。

3.MinMetaspaceFreeRatio

  -XX:MinMetaspaceFreeRatio:メタスペースGCを行ったときのアイドルは、このパラメータ(非アイドルあまりのすなわち、実際の割合は、十分なメモリ)よりも小さい場合、仮想マシンはメタスペースのサイズを大きくしますよりも、現在のメタスペースの空き容量を計算します。デフォルトは40%である、40です。成長率メタスペースを制御するには、このパラメータを設定し、小さすぎる値は遅い成長メタスペースにつながる、メタスペースを使用し、徐々に飽和するロード後のクラスに影響を与える可能性があります。値は、メモリを無駄に、過度のメタスペースの成長の原因となります大きすぎます。

4.MaxMetasaceFreeRatio

  -XX:MaxMetaspaceFreeRatio:メタスペースGCを行い、アイドルがこのパラメータよりも大きい場合、VMはいくつかのスペースメタスペースを解放しますよりも、現在のメタスペースの空き容量を計算します。デフォルトは70%である、70です。

 

おすすめ

転載: www.cnblogs.com/jalja/p/11759252.html