[注意事項を読む] JAVA仮想マシンのJVM障害診断とパフォーマンス最適化を実際に戦うメモを読む


ここに画像の説明を挿入します

1。概要

20210302-20210308実際のJAVA仮想マシンのJVM障害診断とパフォーマンス最適化の本を数日間読みました。ここにいくつかの読書ノートがあります。

1.1第1章:Java仮想マシンの予備調査

最初の章では、主にJava仮想マシンに関連するコンテンツについて説明しますが、これはそれほど詳細ではありませんが、1つのポイントは非常に優れています。セクション1.5.1では、Java仮想マシンでの整数の表現がわかりにくいです。

  1. 元のコードの場合、同じ絶対値を持つ正の数と負の数は、符号ビットのみが異なります。
  2. 反転コードはソースコードに基づいており、符号ビットは変更されず、残りは反転されます
  3. 負の数の補数は1の補数に1を加えたものであり、整数の補数はソースコード自体です。

メリット

  1. 数値0の表現は統一できます。0は正の数でも負の数でもないため、元のコード表現を使用する場合、符号ビットを判別するのは困難です。0を正の数とaに分割して得られる元のコードコード負の数はノンストップですが、補数を使用します。当時、2つは同じです。可以解决0存储的问题
  2. 補数コードを使用すると、正の数の加算と減算の計算を簡略化し、減算をパーティ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をもう一度学ぶと、これらのいくつかのケースは非常に実用的で非常に優れています。

最後に、新機能の紹介があります。

おすすめ

転載: blog.csdn.net/qq_21383435/article/details/114545588