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%を占める

推薦する

トラフィックを爆発させる方法を教えます QQマーケティング事例説明

ウェブマスターの皆さん、注意してください。まだウェブサイトのトラフィックが不足していることを心配して...

ウェブサイトのおすすめ: KitApps「ワンストップ」モバイルアプリ DIY サービス

KitApps: ワンストップモバイルアプリDIYサービス新浪テクノロジー ヤン・フェイモバイル イ...

ウェブサイトが過度に最適化されているのはウェブマスターだけのせいでしょうか?

昨今、多くのウェブマスターや SEO 担当者が大きな葛藤を抱えています。彼らは、自分のサイトが誤って...

テンセントクラウドが初めてコンピューティングパワー製品マトリックスを発表、自社開発戦略を加速し、ソフトウェアとハ​​ードウェアの連携を推進

9月11日、2020テンセントグローバルデジタルエコシステムカンファレンス高速インテリジェントコンピ...

Kubernetes がクラスター外部にサービスを公開する方法をご存知ですか?

Kubernetes がグループ外にサービスを公開する方法は、Ingress、LoadBlance...

基本的なソフトウェアとハ​​ードウェアの互換性の観点からデスクトップクラウドの応用について議論する

世代交代であろうと、オペレーティングシステムやアプリケーションソフトウェアの継続的な再構築と更新であ...

インフルエンサー マーケティングが SEO に役立つことをご存知ですか?

インフルエンサーマーケティングがブランドの海外展開に非常に役立つことは誰もが知っています。注文と売上...

未来のデータセンター:分散アーキテクチャに基づく構築と開発

[[434038]]定義分散データセンター (DDC) は、ネットワークを使用して数千台のストレージ...

2012年の百度のSEO重視のドラマ

2012年は百度が力を発揮する年になるだろう。年初から現在まで、百度は一度も止まらなかった。百度の「...

Hostdare: ロサンゼルス CN2 GIA VPS + CN2 GT VPS の最新 15% オフ プロモーション

Hostdare から 8 月の最新プロモーション情報を受け取りました。Cera コンピュータ ルー...

電子商取引の「ダブルイレブン」:モデルの戦いか、それともただ物事を強制しているだけか?

今年の「双十一」では、中国版「ブラックフライデー」とも言える、TmallやJD.comなどの電子商取...

個人的な経験:タオバオの商人はユーザーを騙し、オンラインショッピングをする際には注意するよう皆に警告している

インターネット セキュリティは絶えず求められ、推進されており、2014 年のクリーン インターネット...

クラウド コンピューティングの簡単な歴史 (完全版)

クラウドコンピューティングに関連する技術分野、技術用語、技術製品は目を見張るほどあります。クラウド ...

Dockerの始め方からプロジェクトのデプロイまでお話しましょう

Docker の概念Docker は、Go 言語をベースにしたオープンソースのアプリケーション コン...

ハイブリッドクラウドにおけるDevOpsのベストプラクティス

近年、柔軟性、パフォーマンス、スケーラビリティの向上を目的としたさまざまなツール、テクニック、フレー...