ホームページ  >  記事  >  Java  >  Java 仮想マシンの詳細な概要

Java 仮想マシンの詳細な概要

PHP中文网
PHP中文网オリジナル
2017-06-20 14:35:161570ブラウズ

1. Java 仮想マシンの概要

Oracle によって正式に定義された Java テクノロジー システムには主に次の部分が含まれます:

  • Java プログラミング言語

  • さまざまなプラットフォーム用の Java 仮想マシン

  • Java API クラス ライブラリ

  • サードパーティ Java クラス ライブラリ

Java プログラミング言語、Java 仮想マシン、および Java API クラス ライブラリの 3 つの部分を総称して JDK (Java Development Kit) と呼ぶことができます。 Javaプログラム開発のための最低限の環境です。また、Java API における Java SE API サブセットと Java 仮想マシンを総称して JRE (Java Runtime Environment) と呼び、Java プログラムを実行するための標準環境です。

Java 仮想マシンが「仮想」と呼ばれる理由は、それが仕様によって定義された単なる抽象的なコンピューターだからです

多くの学生は、Java 仮想マシンは単なるものであると考えるかもしれません。仮想マシンはありますか?または、Java 仮想マシンは Oracle の HotSpot 仮想マシンを指すと考えてください。ここでは、1996 年に Sun がリリースした JDK1.0 に含まれる Sun Classic VM 以来、現在に至るまでさまざまな種類の仮想マシンが登場し、消滅してきた Java 仮想マシン ファミリについて簡単に紹介します。現在存在する仮想マシン。

HotSpot VM

Oracle JDK および OpenJDK に付属する仮想マシンは、最も主流で広く使用されている Java 仮想マシンです。 Java 仮想マシンを紹介する技術記事は、特に指定がない限り、ほとんどが HotSpot VM を紹介しています。 HotSpot VM は Sun によって開発されたのではなく、小規模企業 Longview Technologies によって設計されました。同社は 1997 年に Sun に買収され、Sun は 2009 年に Oracle に買収されました。
J9 VM
J9 VM は IBM によって開発された VM であり、現在 IBM の主な開発 Java 仮想マシンです。 J9 VM の市場での位置付けは HotSpot VM に近いです。J9 VM の現在のパフォーマンス レベルは、HotSpot VM とほぼ同じレベルです。 VM。 Zing VM

Oracle の HotSpot VM に基づいており、レイテンシーに影響を与える多くの詳細が改善されています。 3 つの最大のセールス ポイントは次のとおりです:

1. 低遅延、「一時停止なし」C4 GC、GC によって発生する一時停止は 10 ミリ秒未満に制御でき、サポートされる Java ヒープ サイズは 1 TB に達します。起動後の素早い予熱機能。
  • 3. 管理性: Zing Vision は、JVM に統合されており、オーバーヘッドがなく、運用環境でいつでもオンにできる監視ツールです。
  • 3. Java 仮想マシンの実行プロセス
  • Java プログラムを実行するとき、その実行プロセスは何でしょうか?以下に示すように。

上の図からわかるように、Java 仮想マシンには Java 言語との必要な接続はありません。それは、特定のバイナリ ファイル (クラス ファイル) にのみ関連付けられています。

4. Java 仮想マシンの構造

ここで説明するアーキテクチャは、HotSpot VM の特定の実装ではなく、Java 仮想マシンの抽象的な動作を指します。 Java 仮想マシンの仕様によると、抽象的な Java 仮想マシンは次の図に示されています。

JVM = クラスローダー クラスローダー + 実行エンジン 実行エンジン + ランタイムデータ領域 ランタイムデータ領域

classloader

はハードディスク上のクラスファイルをJVMのランタイムデータ領域にロードしますが、クラスファイルが実行できるかどうかについては責任を負いません。それは実行エンジンの責任です。

Java 仮想マシンの抽象仕様は単なる概念です。一般に、この実装は複数のプロバイダーから提供され、複数のプラットフォームに存在する場合があります。完全にソフトウェアで実装することも、ハードウェアとソフトウェアの組み合わせで実装することもできます。 5. 仮想マシンのライフサイクル

ランタイム Java 仮想マシン インスタンスの制限された義務は次のとおりです: Java プログラムを実行します。

Java プログラムが開始されると、仮想マシン インスタンスが生成されます。プログラムが閉じられて終了すると、仮想マシン インスタンスも停止します。 3 つの Java プログラムを同じコンピュータ上で同時に実行すると、3 つの Java 仮想マシン インスタンスが取得されます。各 Java プログラムは、独自の Java 仮想マシン インスタンスで実行されます。 Java 仮想マシン インスタンスは、初期クラスの main() メソッドを呼び出して Java プログラムを実行します。 main() メソッドはパブリックかつ静的であり、戻り値が void で、パラメータとして文字列配列を受け入れる必要があります。このような main() メソッドを持つクラスは、Java プログラムを実行するための開始点として使用できます。

りー

上記の例では、Java プログラムの初期クラスの main() メソッドがプログラムの初期スレッドの開始点として使用され、他のスレッドはこの初期スレッドによって開始されます。

Java 仮想マシン内には、デーモン スレッドと非デーモン スレッドの 2 種類のスレッドがありますデーモン スレッドは通常、ガベージ コレクション タスクを実行するスレッドなど、仮想マシン自体によって使用されます。ただし、Java プログラムは、作成したスレッドをデーモン スレッドとしてマークすることもできます。 Java プログラムの初期スレッド、つまり main() で開始されるスレッドは、非デーモン スレッドです。

デーモン以外のスレッドが実行されている限り、Java プログラムは実行され続けます。 プログラム内のデーモン以外のスレッドがすべて終了すると、仮想マシン インスタンスは自動的に終了します。セキュリティ管理者が許可すれば、RuntimeクラスまたはSystemクラスのexit()メソッドを呼び出してプログラム自体を終了することもできます。

以上がJava 仮想マシンの詳細な概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。