Javaの仮想マシンのJVM
JVMがあるJRE の一部
データが中に配置されたときに、JVMの時間、データが異なる位置に分解されます
Javaの実行時のメモリ部門
スレッドの株式:
ヒープおよびメソッド領域
プライベートエリアスレッド:
VMスタック、ネイティブメソッドスタックとプログラムカウンタ
ヒープは、実際のオブジェクトを置きます
VMスタック入れ Javaのメソッド
ネイティブメソッドスタックが入れネイティブメソッドを
メソッド地区プット クラス情報、定数、静的変数
プログラムカウンタ 最初の数行にスレッドの実行
ヒープのポイント
新生児、老齢、永久に代わっ
新生児に分割エデンS0 S1 8 :1 :1
一般的なガベージコレクタ
シリアルコレクター:ねじ込み それだけで使用するコレクションを完了するために、CPUやコレクション・スレッドを、他のすべての作業中にコレクションの最後まで、スレッドガベージコレクションを停止する必要があります。
parNew コレクター:マルチスレッドを考慮することができるシリアルマルチスレッド版
CMSのコレクター:明確なラベルに基づいて最短復旧時間目標コレクタアルゴリズムの一時停止
G1 コレクター:ガベージコレクタサーバ用でOracleのJDK 9 デフォルトの後にGCのオプション
長所:パラレルと同時、世代収集、空間の統合、予測可能な一時停止
ガベージコレクションのアルゴリズム:
レプリケーションのアルゴリズム
マーク - スイープアルゴリズム
整理するタグ - アルゴリズム
JVM のチューニング
クラスのライフサイクル:
負荷 接続(ベリファイ 準備 分析) 初期 使用 アン
ロード:の.class ファイルがディスクからメモリに読み込まれます
確認してください:バイトコードの正しさを検証します
準備:静的変数は、メモリクラスを割り当て、デフォルト値を与えられたために
分析:他のすべてのクラスローダが参照するクラスをロードします
タイプのクラスローダ
クラスローダを起動します
ロードするための責任なので、上のJREの目標、charsets.jarと下rt.jarのようJREのコア・クラス・ライブラリを、。
拡張クラスローダ
ロードを担当瓶のjreディレクトリの拡張EXT
システムクラスローダ
ロードするための責任クラスパスにクラスパッケージを
カスタムローダー
これは、ユーザー定義クラスのパッケージパスをロードする責任があります
リレーションシップクラスローダ:最大関係委員会
全体的な責任の委任メカニズム
ときに別の表示のClassLoader、及びそのようなものがクラスローダによってロードされ、また参照されるクラスに依存しない限り、クラスローダは、クラスをロードします。
両親デリゲートメカニズム(モデル)
、ターゲットを見つけるために、親クラスローダを委託見つけ、ケースでのパスにターゲットクラスをロードするために指し見つけることができません
JVMのチューニングmonitorコマンド
ガベージコレクションは、ヒープ内の領域を再利用スレッドの終焉とメモリ空間をスタックし、死ぬことを受けない、 JVMのガベージコレクションの管轄!
JPS:によってJPS クエリプロセスID pidの
Jinfoの:ビューで実行するJava 拡張プログラムパラメータ
見る JVMのパラメータを
Jinfoの-flags 11740
。チューニング
JVMのチューニングは、次の2つの主要の調整である指標
滞留時間:ガベージコレクションを行うためのガベージコレクタは、アプリケーションの実行時間を中断。-XX:MaxGCPauseMillis
スループット:時間の割合とガベージコレクションの合計時間: 1 /(N + 1)、1-1 /(1 + N)のスループット。-XX:GCTimeRatio = N
GCのチューニングステップ
1.プリントGCログ
-XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -XX:+ PrintGCDateStamps -Xloggc:C:/log/gc.log
Tomcatは直接変数JAVA_OPTSロードすることができます
主要な指標を得るために、ログの解析2.
理由の3. GC分析、JVM引数を最適化
並列スカベンジコレクタ(デフォルト)
ログ解析:
第1の同調提供メタスペースサイズ:スペース要素(のサイズを増加させる)-XX:MetaspaceSize = 64M -XX :MaxMetaspaceSize = 64M
第2の同調は、動的拡張が若い世代の増分(デフォルトは増加 20%)減少させることができるがYGC -XX:YoungGenerationSizeIncrement = 30
チューニングをマージ
-XX:+ PrintGCDetails -XX:MetaspaceSize = 64M -XX:MaxMetaspaceSize = 64M -XX:YoungGenerationSizeIncrement = 30 -XX:+ PrintGCTimeStamps -XX:+ PrintGCDateStamps -Xloggc:C:/log/gc-2.log
使用 G1コレクタはログを収集
-XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -XX:+ PrintGCDateStamps -XX:+ UseG1GC -Xloggc:./ログ/ GC-g1.log