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

推薦する

劉強東のトマトスキャンダルを通してイベントマーケティングについて語る

最近、百度のホットキーワードランキングを見ていたら、「トマトゲート」というワードが急上昇していたので...

A5 最適化チーム: SEO に関する FAQ (パート 2)

前の章では、A5 最適化チーム (http://seo.admin5.com) が検索エンジンの観点...

中国SaaSアプリケーションカンファレンス、企業のデジタル変革への新たな道の開拓を支援

クラウドコンピューティングとビッグデータによってもたらされたデジタル変革は、経済発展に新たな推進力を...

簡単な分析:オンサイトSEO最適化の3つの核心ポイント

SEOを長年やってきた人の中には、擬似オリジナルにする方法に悩んでいる人もいるでしょうし、外部リンク...

新年、あなたのブログはどのような新たな展開を迎えるでしょうか?

ブログはすでに繁栄したウェブサイトの形態であり、ウェブマスターの観点から見ても、ユーザーの観点から見...

東西分離問題を解決するために、VLAN または VPC を使用しないのはなぜですか?

[[251022]]序文職業倫理を持つ厳格なセキュリティ専門家として、まず正直に言わなければなりませ...

香港の高防御サーバー商人グループの紹介、香港の高防御インスタントソリューションサーバー

香港の帯域幅は高額なため、ほとんどの香港サーバーは DDoS 保護を提供していません。この投稿は、お...

なぜキーワードは一夜にして消えてしまったのでしょうか?

このウェブサイトのことを話すと、もう落ち着かなくなります。2か月間頑張って、ようやくホームページにキ...

JVM: 内部情報をお伝えします

[[361071]]ほとんどのユーザーは、Java リフレクションの使用に精通しています。特にオープ...

MetWeb: ウェブサイトをオープンソース化するとはどういう意味ですか?

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

検索エンジンがオンサイトインデックスツールになる傾向にどのように対処すればよいでしょうか?

インターネットで何をするにしても、より多くの訪問者を獲得したり、広めたい情報をより広く伝えたり、その...

大規模エリアにおける仮想化コアネットワークの導入に関する議論

NFV テクノロジーは、ネットワーク要素のソフトウェアを基盤となるハードウェアから分離し、VNF の...

中国企業はITの複雑性という課題に直面している。企業の46%が自社のIT環境が2年前よりも複雑になっていると考えている。

Citrix は本日、「中国の情報技術の複雑性の現状」と題する調査レポートの正式リリースを発表しまし...

売り手のためのクイックルック: ポッドキャストのための 5 つの SEO ヒント

パンデミック中にポッドキャストを聴く人の数が劇的に増加し、ポッドキャストは2019年に主流のマーケテ...