JVMは難しいですか?あるいは、この記事を読んだばかりかもしれません。

JVMは難しいですか?あるいは、この記事を読んだばかりかもしれません。

コンセプト

仮想マシン: 完全なハードウェア システム機能をシミュレートし、完全に分離された環境でソフトウェア方式で実行される完全なコンピュータ システムを指します。これは物理マシンのソフトウェア実装です。一般的に使用される仮想マシンには、VMWare、Visual Box、Java 仮想マシン (Java 仮想マシン、略して JVM) などがあります。

[[270256]]

Java 仮想マシン キャンプ: Sun HotSpot VM、BEA JRockit VM、IBM J9 VM、Azul VM、Apache Harmony、Google Dalvik VM、Microsoft JVM…

プロセスを開始する

基本的なアーキテクチャ

Java ランタイムはソース コード (.java) をバイトコードにコンパイルし、それが jre によって実行されます。 jre は Java 仮想マシン (jvm) によって実装されます。 Jvm はバイトコードを分析し、解釈して実行します。


JVM は 3 つの主要なサブシステムで構成されています。

  • 1. クラスローダーサブシステム
  • 2. ランタイムデータ領域(メモリ)
  • 3. 実行エンジン

ガベージコレクション (GC)

1. ゴミを識別し、リサイクル可能かどうかを判断するにはどうすればよいでしょうか?

  • 参照カウント方式: 各オブジェクトにカウンターを追加します。オブジェクトがどこかで参照されると、カウンターは 1 増加し、参照が無効な場合は、カウンターは 1 減少します。オブジェクト カウンターが 0 かどうかは、オブジェクトがリサイクル可能かどうかを判断するために使用されます。欠点: 循環参照の問題を解決できない
  • ルート検索アルゴリズム: 到達可能性分析法とも呼ばれ、"GC ROOTs" オブジェクトを検索開始点として使用し、参照を通じて下方向に検索します。通過するパスは参照チェーンと呼ばれます。オブジェクトがリサイクル可能かどうかは、オブジェクトが参照チェーンへのパスを持っているかどうかによって決まります (GC ルートとして使用できるオブジェクト: 仮想マシン スタックで参照されるオブジェクト、メソッド領域内のクラスの静的属性によって参照されるオブジェクト、メソッド領域内の定数によって参照されるオブジェクト、およびローカル メソッド スタック内の JNI によって参照されるオブジェクト)

2. Java のヒープは、GC がガベージを収集する主な領域です。 GC は、マイナー GC とフル GC (またはメジャー GC) の 2 種類に分けられます。

  • マイナー GC: 若い世代 (Young Gen) のスペースが不足している場合にコレクションがトリガーされます。 Java のほとんどのオブジェクトは通常、長期間存続する必要がないため、若い世代は GC コレクションが頻繁に行われる領域であり、コピー アルゴリズムが使用されます。
  • フル GC: 旧世代 (Old Gen) のスペースが不足している場合、またはメタスペースが最高水準点に達した場合にコレクションが実行されます。大きなオブジェクトや長期間存続するオブジェクトは大量のメモリ空間を占有し、リサイクル効率が低いため、マークスイープアルゴリズムが使用されます。

GCアルゴリズム

リサイクル戦略に応じて、マークスイープアルゴリズム、マークコンパクトアルゴリズム、コピーアルゴリズムに分けられます。

1. マークアンドスイープアルゴリズム:「マーキング」と「スイープ」の 2 つの段階に分かれています。まず、リサイクル可能なオブジェクトをマークし、マークが完了したら、マークされたすべてのオブジェクトが占めるメモリ領域をリサイクルします。デメリット: 1. 循環参照を処理できない 2. 効率が低い 3. 大量のメモリフラグメントが生成される (追記: スペースの断片化が多すぎると、将来大きなオブジェクトを割り当てるときに十分な連続メモリスペースを適用できなくなり、新しいラウンドの GC が事前にトリガーされる可能性があります)


2. マークソートアルゴリズム:「マーキング」と「ソート」の 2 つの段階に分かれています。まず、リサイクルできるものに印を付けます。マークした後、オブジェクトを一方の端に移動し、境界の外側のメモリを直接クリーンアップします。


3. コピーアルゴリズム: メモリ空間を 2 つの等しい領域に分割し、一度に 1 つの領域のみを使用します。 gc 中、現在使用されている領域が走査され、使用中のオブジェクトが別の領域にコピーされます。このアルゴリズムは、使用中のオブジェクトのみを毎回処理するため、コピーコストは比較的小さくなります。同時に、コピー後にメモリを適切にソートできるため、「断片化」の問題は発生しません。デメリット: 1. メモリ使用率の問題 2. オブジェクトの生存率が高い場合、効率が低くなります。


パーティション処理に応じて、増分コレクションアルゴリズム、世代別コレクションアルゴリズムに分けられます。

1. 増分コレクション: リアルタイム ガベージ コレクション アルゴリズム。つまり、アプリケーションの実行中にガベージ コレクションが実行されます。理論的には、従来の生成方法によって発生する問題を解決できます。増分コレクションは、ヒープ領域を一連のメモリ ブロックに分割します。使用する際は、まず一部から使用してください。ガベージコレクションを行う際は、以前使用されていた部分に残っているオブジェクトを、後ろの未使用のスペースに配置します。これにより、従来の生成方法のように、使用がすべて完了した後にリサイクルのために一時停止する状況を回避し、使用しながら収集する効果が得られます。

2. 世代別コレクション: (商用デフォルト) オブジェクトのライフサイクルに基づいて、新世代、旧世代、メタスペースに分割され、異なるライフサイクルで異なるアルゴリズムを使用してオブジェクトをリサイクルします。


システムスレッドに応じて、シリアルコレクションアルゴリズム、並列コレクションアルゴリズム、同時コレクションアルゴリズムに分類できます。

1. シリアルコレクション: 単一のスレッドを使用してガベージコレクション作業を処理します。実装が簡単で、効率が高くなります。デメリット: 1. 複数のプロセッサを活用できない 2. ユーザースレッドを一時停止する必要がある

2. 並列コレクション: マルチスレッドを使用してガベージ コレクション作業を高速かつ効率的に処理します。理論的には、CPU の数が多いほど、並列コレクターが発揮できる利点は多くなります。デメリット: ユーザースレッドを一時停止する必要がある

3. 同時収集: ガベージ スレッドとユーザー スレッドが同時に動作します。システムはガベージコレクション中にユーザースレッドを一時停止する必要がない

GCコレクターの一般的な組み合わせ



JVM パフォーマンス チューニングのアイデア


GCログを理解する


  1. [GC [PSYoungGen: 8192K->1000K(9216K)] 16004K->14604K(29696K), 0.0317424 秒] [時間:ユーザー=0.06 システム =0.00、実数=0.03 秒]
  2. [GC [PSYoungGen: 9192K->1016K(9216K)] 22796K->20780K(29696K), 0.0314567 秒] [時間:ユーザー=0.06 システム =0.00、実数=0.03 秒]
  3. [フルGC [PSYoungGen: 8192K->8192K(9216K)] [ParOldGen: 20435K->20435K(20480K)] 28627K->28627K(29696K)、[メタスペース: 8469K->8469K(1056768K)​​]、0.1307495 秒] [時間:ユーザー=0.50、システム =0.00、=0.13 秒]
  4. [フルGC [PSYoungGen: 8192K->8192K(9216K)] [ParOldGen: 20437K->20437K(20480K)] 28629K->28629K(29696K)、[メタスペース: 8469K->8469K(1056768K)​​]、0.1240311 秒] [時間:ユーザー=0.42、システム =0.00、=0.12 秒]

一般的な異常

  • StackOverflowError: (スタックオーバーフロー)
  • OutOfMemoryError: Java ヒープ スペース (ヒープ スペースが不足しています)
  • OutOfMemoryError: GC オーバーヘッド制限を超えました (GC に 98% 以上の時間がかかり、GC によって回復されたメモリは 2% 未満でした)

<<:  調査レポート: パブリッククラウドストレージはお金の無駄

>>:  QingCloud KubeSphere(QKE)は、基盤となる運用やメンテナンスを必要とせず、よりシンプルで使いやすいです。

推薦する

モバイルアプリケーションがモバイル広告収入の主な成長源となる

新浪科技ニュース:北京時間4月22日朝のニュース、市場調査会社Strategy Analyticsが...

Weiboマーケティング手法をよく使っている皆さんは、本当に知っていますか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeChatが使われるよ...

クラウド テクノロジーをデータ センターに導入 - データ駆動型ビジネスへの道

COVID-19 によって生成された大量のデータは、企業に新たな成長の機会を生み出していますが、この...

文化的変革を加速するためのイノベーションの道筋を定義するRed Hat Open Innovation Labが12月に中国で開設される

[51CTO.com からのオリジナル記事] イノベーションは Red Hat の企業開発の一貫した...

革新的な運営活動:ゲーミフィケーションパッケージングに基づく建国記念日運営活動

現在、製品の運用活動は多様かつ無限であり、製品の特性を反映し、独自性を持たせることができる運用活動を...

Vultr クラウド サーバーはどうですか? Vultr India (ムンバイ) データセンターの簡単な評価

Vultrはどうですか? Vultr クラウド サーバーはどうですか? Vultr India クラ...

racknerd: 月額 159 ドル、ロサンゼルス/ニューヨーク、100T 高トラフィック専用サーバー、e3-1240v3/16g メモリ/1T ハードディスク/5IP

Racknerd は現在、ロサンゼルスとニューヨークに 2 つのデータ センターを持つ高トラフィック...

SEO の高度な「異常な」指示、ウェブマスターの皆さんはそれを使用しましたか?

ウェブマスターであれば、ウェブサイトの構造最適化、ページ最適化、URL最適化に精通しているはずです。...

「不良少年」頼林鋒:玉林木峰フォーラムから115クラウドディスクへ

115 Technology Co., Ltd. 会長兼 CEO の Lai Linfeng 氏 (...

30秒、12億、50%、アリババとエバーグランデの電撃結婚

6月5日、アリババグループは恒大サッカークラブと戦略提携協定を締結したと発表した。アリババは12億人...

クリエイティブ製品電子商取引サイトFunwan Internet Companyの北京からの撤退の例

周斌氏は以前、百度連盟の取締役を務めていた。 2008年にクリエイティブ製品の電子商取引ウェブサイト...

SAPは製薬業界のデジタル変革とスマートライフサイエンス企業の構築を支援します

8月27日〜28日、中国医薬・医療情報化連盟(CIAPH)主催の第8回医薬・医療産業情報化サミットフ...

Velocihost-384M メモリ KVM VPS/マイアミ/月額 7 USD

Velocihost のサーバーは Colohouse (VPSAE 16 および PCI DVPS...

Pacificrack: 米国クラスター VPS、32 C セグメント、無料スナップショット + フルバックアップ、月額 4 ドルから

Pacificrack は、まったく新しい「サイト クラスター VPS」を導入しました。これは、デフ...