JVMの基本原理はこのオープンソースプロジェクトで説明されている。

JVMの基本原理はこのオープンソースプロジェクトで説明されている。

[[415998]]

JVM は Java Virtual Machine の略です。 JVM はコンピューティング デバイスの仕様です。実際のコンピュータ上でさまざまなコンピュータ機能をシミュレートして実装された架空のコンピュータです。

Java プログラマーは皆、JVM が優れたプログラマーになるために乗り越えなければならないハードルであることを知っています。今日、Github のウィークリー リストで非常に便利な JVM オープン ソース プロジェクト、jvm を見つけました。このプロジェクトでは、作成者が習得する必要があると考える JVM の知識ポイントをいくつか記録します。このプロジェクトを学習した後、JVM の基本原理をより包括的に理解したい場合は、Zhou Zhiming 先生の著書「Java 仮想マシンの詳細な理解 - JVM の高度な機能とベスト プラクティス (第 2/3 版)」全文を読むことができます。

このプロジェクトの主な内容は次のとおりです。

プロジェクト全体の内容は比較的完成しています。 [JVM メモリ構造] の部分を見てみましょう。

Java 仮想マシンのメモリ空間は 5 つの部分に分かれています。

  • プログラムカウンタ
  • Java 仮想マシン スタック
  • ネイティブメソッドスタック
  • ヒープ
  • 方法領域

JDK 1.8 と JDK 1.7 の最大の違いは、メタデータ領域が永続世代に置き換わっていることです。メタスペースの本質は永続世代に似ており、どちらも JVM 仕様のメソッド領域の実装です。ただし、メタスペースと永続世代の最大の違いは、メタデータ スペースは仮想マシン内になく、ローカル メモリを使用することです。

Java仮想マシンスタックの定義

Java 仮想マシン スタックは、Java メソッド実行プロセスを記述するメモリ モデルです。 Java 仮想マシン スタックは、実行される各 Java メソッドに対して「スタック フレーム」と呼ばれる領域を作成します。この領域は、メソッドの実行中に次のような情報を保存するために使用されます。

  • ローカル変数テーブル
  • オペランドスタック
  • 動的リンク
  • メソッドエクスポート情報

プッシュアンドポッププロセス

メソッドの実行中にローカル変数を作成する必要がある場合、ローカル変数の値はスタック フレーム内のローカル変数テーブルに格納されます。

Java 仮想マシン スタックの最上部にあるスタック フレームは、現在実行中のアクティブ スタック、つまり現在実行中のメソッドであり、PC レジスタもこのアドレスを指します。このアクティブなスタック フレームのローカル変数のみがオペランド スタックで使用できます。このスタック フレームで別のメソッドが呼び出されると、対応するスタック フレームが作成され、新しく作成されたスタック フレームがスタックの先頭にプッシュされ、現在のアクティブなスタック フレームになります。

メソッドが終了すると、現在のスタック フレームは削除され、スタック フレームの戻り値は、新しいアクティブ スタック フレームのオペランド スタック内のオペランドになります。戻り値がない場合、オペランド スタック上のオペランドは新しいアクティブ スタック フレームでは変更されません。

現在、jvm は Github で 6.1K のスターと 1.5K のブランチを持っています (Github アドレス: https://github.com/doocs/jvm)

<<:  2021 年の優れたオープンソース Kubernetes ツール 11 選

>>:  Canalys: アマゾン、マイクロソフト、グーグルがクラウドサービス市場の60%を占める

推薦する

Bilibiliの崩壊で何が失われたのか?

インターネットに浸透した集団として、インターネット サーフィンはほとんどの人にとって日常的な行動にな...

123systems-1g メモリ XenPv/3T トラフィック/年間 30 ドル/G ポート

123systems はバレンタインデー前にプロモーションを実施し、2GB メモリ搭載の OVZ モ...

エッジコンピューティングは、5G の「新しいインフラストラクチャ」の文脈でどのように勝利できるでしょうか?

エッジコンピューティングは、5G 開発において最も注目されているテクノロジーの 1 つになりました。...

小規模融資会社は、AIテレマーケティングロボットを活用して、いかにして市場を迅速に獲得できるのでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています競争が激化...

無人小売業をめぐる戦い:サプライチェーン、管理、店舗レイアウトが成功と失敗の鍵

最近、RT-MartとFeiniu.comが戦略的に投資した新しい小売プロジェクトFaDaoJiaス...

Green Radish アルゴリズムのアップグレードがオンラインストアのソフトコンテンツマーケティングに与える影響の分析

物を買うためのウェブサイトを運営するのは、影響力のあるコンテンツを持つウェブサイトを運営しない限り、...

Baidu ウェブマスター プラットフォーム: DNS サーバーの不安定性もサイト ブロックの原因となる可能性があります

A5ウェブマスターネットワークは5月20日、百度ウェブマスタープラットフォームが最近、DNSサーバー...

WeChatミニプログラムを宣伝するには?これらの5つの方法を知っておく必要があります

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています現在、We...

SpringBootはElasticSearchを詳細に統合し、関連する使用方法を説明します

環境: springboot2.4.12 + ElasticSearch7.8.0導入Elastic...

スパイダーSEO:Baiduの包含が減少した理由と解決策!

多くのウェブマスターが Baidu のインデックスが減少する問題に遭遇しており、最近ではさらに深刻に...

ウェブマスターネットワークからの毎日の報告:政府ウェブサイト侵入事件の判決が発表され、ビデオワンが米国で公開されました

広東省最大の政府ウェブサイトハッキングと偽造事件の判決:金額は3億ドルに達する昨日午後、広東省掲陽市...

ウェブサイトを分析する良い習慣を身につけましょう

4月10日の朝、私は会社に到着すると、同僚たちと集まって、あるウェブサイトがどのようにして百度のホー...

ウェブサイトのランキング低下の主な理由について簡単に説明します(分析結果)

みなさんこんにちは。私はバーチャルリアリティウェブサイトデザインです。最近、私のウェブサイトのランキ...

非常に強力な国内NewSQL分散データベースオープンソース

最近、Inspur テクノロジー チームが開発した NewSQL 分散データベース ZNBase が...