JVM |「Java仮想マシンの深い理解、」研究ノート| VMのクラスローディング機構

Java仮想マシンの役割?

プラットフォーム依存性を排除するためにバイトコードプログラムの解釈。    
特定のプラットフォームに固有のJVMのJavaバイトコードインタプリタ命令。異なるプラットフォーム上で実行するなど、一般的な高レベルの言語は、少なくとも異なるオブジェクトコードにコンパイルする必要があります。そしてJVM、Java言語の導入は、ときに、異なるプラットフォーム上で実行するために再コンパイルする必要はありません。
Java言語コンパイラは、Java仮想マシンオブジェクトコード(バイトコード)にのみ実行を生成するように、特定の情報プラットフォームに関連付けられているJava仮想マシンの遮蔽パターンを使用して、Java言語は、複数のプラットフォーム上でそのまま使用することができます実行します。Java仮想マシンのバイトコードは、実行されると、特定のプラットフォーム上で実行されたマシン命令にバイトコードインタプリタ。 リンク:HTTPS:
// www.nowcoder.com/questionTerminal/057e91ba0d14402c93a7262ef68b5892

メモリ割り当て戦略?(ブック - 91)

Javaシステムは、自動メモリ管理は自動メモリ割り当ての問題の解決に帰着提唱し、最も一般的なメモリ割り当て規則のいくつかは、古い時代に、直接、古い時代に長命オブジェクトを大きなオブジェクトの新しい世代の目標配分の優先順位に従うことです。

  ラージオブジェクトとは何ですか?

Javaオブジェクトは、一般的に連続したメモリ空間、長い文字列や配列の多くを必要と

  長寿命のオブジェクトを理解するには?

生後エデンの最初のマイナーGCによるオブジェクトがまだ生きていた、とサバイバーを収容することができた場合は、遺族のスペースに移動されますと、年齢が1に設定されています。エリア内の各遺族のオブジェクト年齢、マイナーGC「を介して取得」は、(デフォルトでは15歳)ある程度ときにその年齢、1を増加させ、彼らは古い時代に昇格されます。
オブジェクトの昇格老後のしきい値はパラメータで設定することができます。

クラスのライフサイクル

ロード - >認証 - >準備 - >パース - >初期化 - >の使用 - >アンインストール

クラスローディング処理(P214)

 

クラスのロードタイミング(ブック-210)

この時点まで、義務を実行していないJava仮想マシンの仕様は自由に把握する特定の仮想マシンに与えることができます。

初期化フェーズの理解?(211ブック-210)

- -仮想マシン仕様厳格なルールやクラスの唯一の5例は、すぐに「初期化」する必要があります
    -これら4つのinvokestaticバイトコード命令(オブジェクトのインスタンスは、クラスを読んで設定したときに、新しいgetstatic、putstaticに遭遇します静的フィールドは、クラスが初期化されていない場合、あなたは彼らの初期化をトリガーする必要がある、)クラスの静的メソッドを呼び出す
    呼び出されたときにクラスが初期化されていない場合は、あなたがトリガするために必要な、クラスを反映するために、パッケージアプローチをjava.lang.reflectの使用します-初期化
    -クラスを初期化するとき、あなたは親クラスが初期化されていない見つけた場合、あなたはトリガの親クラスを初期化する必要があります
    -仮想マシンが起動されると、ユーザーはメインクラスを指定する必要が実行される(メインを(このマスタークラスを初期化するために)そのクラスのメソッド)、仮想マシン
    -動的言語サポートjdk1.7の使用、...

クラスローダおよびJavaプログラムにおけるその役割(クラス関係)(P228)を説明して?

クラスをロードするためのクラスローダは、動作を実現します。

任意のクラスのために、私たちは一緒にそのクラスローダとクラス自体をロードすることによって、Java仮想マシンでその独自性を確立する必要があります。「等しい」(予防の同じクラスのオブジェクト()メソッド、isAssignableForm()メソッドでisinstance()メソッド)かどうかを二つのクラスの比較
のみこれら二つのカテゴリーにクラスローダによってロードされた前提条件である理にかなっている、そうでなければ同じソースファイル内にも二つのクラスのクラスは、異なるそれらをロードする限り、クラスローダとして、仮想マシンにロードされ、そして2つのクラスが確実に等しくないということです。

両親は、プロセスモデルを委任することができますか?(P231)

-クラスローダクラスローダが要求を受信した場合、それは最初にこのクラスをロードしようとはしませんが、親クラスローダにクラスの委譲し、各レベルのクラスローダを完了することが、真でありますすべてのローダー、最終的な要求は、親クラスローダのフィードバックは、彼らが要求を完了できない場合にのみ、ブートクラスローダのトップに送信する必要があり、子供ローダは、独自のをロードしようとします。
-それは一緒に優先順位の階層を持つクラスローダとJavaクラスであるような利点。

 

おすすめ

転載: www.cnblogs.com/jj81/p/11203174.html