JVMアーキテクチャとライフサイクルモデル:JVMを学びます

JVMのアーキテクチャモデル

Javaコンパイラ指示入力ストリームは、本質的に基づいて、スタック命令セットアーキテクチャ、他の命令セットアーキテクチャが基づいている命令セットアーキテクチャレジスタ

具体的には、これらの二つのアーキテクチャの違い:

  • スタックアーキテクチャの特性に基づいて:
    • リソースに制約のあるシステムの設計と実装が容易
    • 割り当てられたゼロアドレス命令モード:割り当て問題レジスタを避けるために、
    • 命令のほとんどの命令ストリームの命令アドレスは、実行スタックの操作に依存する、ゼロです。小さい命令セット、コンパイラは簡単に達成するために
    • ハードウェアサポート、優れた可搬性、より良いクロスプラットフォーム
  • アーキテクチャレジスタの特性に基づいて:
    • 典型的なアプリケーションは、バイナリ命令セットX86です:例えば、伝統的なPCとAndroidの仮想マシンDavlik
    • 命令セット・アーキテクチャは、ハードウェアに完全に依存している、貧しいポータビリティ
    • 優れた性能と、より効率的な実行
    • これは、操作を完了するために、少ない命令を取ります
    • ほとんどの場合、レジスタベースの命令セットアーキテクチャは、多くの場合、命令のアドレスに、2個、3アドレス命令ベース、スタックベースの命令セットアーキテクチャの命令アドレスは、ゼロベースに基づいて、命令アドレスを有しています

デザインクロスプラットフォームのためには、Javaの命令はスタックに基づいて設計されています。異なるCPUアーキテクチャの異なるプラットフォームは、それがレジスタベースとして設計されていません。利点は、コンパイラは、実装が容易であり、クロスプラットフォーム、小さな命令セットである欠点は、パフォーマンスの低下であり、同様の機能をより命令が必要行います。

JVMのライフサイクル

仮想マシンを起動します

Java仮想マシンが完了するまでに、ブートストラップクラスローダ(ブートストラップクラスローダ)初期クラス(初期クラス)によって作成されて起動し、このクラスには、特定の仮想マシンで指定された達成することです。

仮想マシンの実行

  • Javaプログラムを実行する:実行中のJava仮想マシンは、明確な使命を持っています
  • それだけで、それが停止したときにプログラムが終了し、プログラムの実行が始まったときに実行されます
  • 実行が本当にJava仮想マシンと呼ばれるプロセスである、いわゆるJavaプログラムの実装

仮想マシンを終了します

仮想マシンは、次のような状況を持って終了します。

  • 通常のプログラム実行が終了
  • 中止され、実行中に例外やエラーが発生しました
  • オペレーティングシステムエラーは、Java仮想マシンを終了させるプロセスを引き起こしたので
  • スレッドは、クラスのランタイムまたはクラスシステムのexitメソッドを呼び出し、またはクラスランタイムとJavaセキュリティマネージャの停止方法も終了または停止操作を可能に
  • Java仮想マシンからロードまたはアンロードJava仮想マシンの終了にJNI呼び出しAPIを使用する場合に加えて、JNI(Javaネイティブ・インターフェース)仕様が説明します
公開された23元の記事 ウォン称賛21 ビュー3714

おすすめ

転載: blog.csdn.net/Gldwolf/article/details/104050348