記事のディレクトリ
1。概要
20210302-20210308実際のJAVA仮想マシンのJVM障害診断とパフォーマンス最適化の本を数日間読みました。ここにいくつかの読書ノートがあります。
1.1第1章:Java仮想マシンの予備調査
最初の章では、主にJava仮想マシンに関連するコンテンツについて説明しますが、これはそれほど詳細ではありませんが、1つのポイントは非常に優れています。セクション1.5.1では、Java仮想マシンでの整数の表現がわかりにくいです。
- 元のコードの場合、同じ絶対値を持つ正の数と負の数は、符号ビットのみが異なります。
- 反転コードはソースコードに基づいており、符号ビットは変更されず、残りは反転されます
- 負の数の補数は1の補数に1を加えたものであり、整数の補数はソースコード自体です。
メリット
- 数値0の表現は統一できます。0は正の数でも負の数でもないため、元のコード表現を使用する場合、符号ビットを判別するのは困難です。0を正の数とaに分割して得られる元のコードコード負の数はノンストップですが、補数を使用します。当時、2つは同じです。
可以解决0存储的问题
- 補数コードを使用すると、正の数の加算と減算の計算を簡略化し、減算をパーティAとして扱い、1を実現し、正と負の数の加算の1を実現できます。
补码相加没无需区别正数和负数,就能得到正确结果。
次に、浮動小数点数の表現があります。
1.2Java仮想マシンの基本構造を知る
この章では、主にJava仮想マシンの基本構造について説明します。これには、Javaヒープ、Javaスタック、およびメソッド領域のより完全な説明が含まれます。同時に、Java仮想マシンのパラメータを設定する方法についても簡単に説明します。特定の仮想マシンパラメータについては、この章ではあまり情報を提供していませんが、この本の後続の章では、いくつかの実用的な仮想マシンパラメータを段階的に紹介します。
1.3一般的に使用されるJava仮想マシンのパラメータ
この章では、主に、ガベージコレクションの追跡パラメーターやクラスの読み込みの追跡パラメーターなど、一般的に使用されるJava仮想マシンのパラメーターをいくつか紹介します。同時に、ヒープスペースの構成方法、メソッド領域、Javaスタック、ダイレクトメモリの構成についても詳しく紹介します。さらに、この章では、システムでメモリオーバーフローエラーが発生した後の情報の取得と修復方法についても紹介します。最後に、仮想マシンのサーバーとクライアントの動作モードを簡単に紹介します。
1.4ガベージコレクター
この章では、主に、いくつかの主要なガベージコレクションアルゴリズムのアイデアを含む、ガベージコレクションの理論的基礎を紹介します。同時に、到達可能性、到達可能オブジェクト、新世代、旧世代など、ガベージコレクションに関連する基本概念を紹介し、システムを一時停止させるガベージコレクションの事例を示します。読者がこれらの内容に精通し、将来的にJavaのガベージコレクターを理解するための良い基盤となることを願っています。
この章は理解しやすく、詳細です。主に、強い引用、誤った引用、確定および関連する事例の証拠について説明し、説明は非常に詳細です。見てみることをお勧めします。
1.5ガベージコレクタとメモリの割り当て
説明はより詳細で、原理と実際の戦闘で、システムJvmパラメーターがパフォーマンスに与える影響を比較できます。コードは多数あるため、自分でコーディングすることをお勧めします。
1.6パフォーマンスモニタリングツール
topコマンド、vmstaコマンド(このコマンドは使用されていません)、iostatコマンド(このコマンドは使用されていません)、pidsta(このコマンドは使用されていません)
次に、ウィンドウの下のパフォーマンス監視ツールについて説明しました。タスクマネージャーが最も強力で、新年の監視ツールを実行します。これはあまり使用されません。次に、Process Exploreプロセス管理ツールpslist(Windowsのコマンドラインツール)を受け取ります。
jdkパフォーマンス監視ツール。jps、jstat、jinfoコマンドjmapコマンド、jhatコマンドjstckコマンド、jstatdコマンド、jcomコマンド、hprofパフォーマンス統計ツール、拡張jpsコマンド、これは試していません。
グラフィカル仮想マシン監視攻撃JConsole、ビジュアルパフォーマンス監視ツールVisual VM、スレッドダンプと分析、メモリスナップショット分析、Btraceの紹介(私はこれをプレイしていません)
仮想マシン診断ツールMission Control、MBeanサーバー。フライトレコーダー
1.7Javaヒープを分析する
メモリオーバーフロー、永続領域オーバーフロー、字符串详解
文字列文字列メモリリーク、文字列定数プールの場所
仮想マシン内視鏡、MATは慎重に行われていません。
ディープヒープとシャローヒープの違い。初めて聞いた支配木。
Tomcatメモリオーバーフロー。QQLタイプのSQLステートメント、これはもっと複雑です、私はそれを見ませんでした。
1.8ロックと並行性
オブジェクトヘッドとロック、バイアスロック、軽量ロック、ロック拡張、スピンロック、ロックの取り外し、
アプリケーション層に固定された最適化のアイデアの紹介
CASの原則、アトミック操作の概要。
Javaメモリモデル
1.9CLassファイル構造
この章には、理解するのが難しく退屈な指示がたくさんありますが、それらは非常に役立ちます。
ASMバイトコードの操作は、ここに多くの場合がありますので、それぞれの手で学ぶことをお勧めします。
1.10クラスローディングシステム
クラスの読み込みの各プロセスについて説明しました。
classLoaderの親委任モード。短所、破壊。
ホットリプレースメントの実現。
1.11バイトコードの実行
多くの指示は理解するのが難しいです。
同期制御
ASMをもう一度学ぶと、これらのいくつかのケースは非常に実用的で非常に優れています。
最後に、新機能の紹介があります。