ディレクトリ
クラスローダ
1.負荷クラス
Javaコードでの種類負荷、および接続の初期化プロセスにあるプログラム実行されて完了しました。
- タイプ:これは、このようなユーザーオブジェクトとして、Classクラスを参照し、タイプは、ここではなく、新しいユーザーオブジェクトのうちより、User.classを指します。
- ロード:メモリにロードされ、その後、指定されたクラスファイル、またはリモートURLのファイルを取得します
- 接続:クラスとクラス、検証および検査クラスファイルの参照関係の精度を決定します。ここでは、3つの段階に分かれています
初期化:ロードされたクラスの静的変数の代入正しい初期化プロセス
プログラムの実行中:平均負荷、接続、初期化処理が実行時ランタイムではなく、静的コンパイル時に行われます完了します。
1.1クラスローディング - 接続プロセスは、3つの段階に分けられます
- 検証:クラスファイルのほとんどが来るのjavacでコンパイルされますが、コンパイル済みのクラスファイルを再度手動でテキストエディタを変更することができますが、正確性クラスファイルを確認します。
準備:静的変数と割り当てデフォルト値の種類にメモリを割り当てるように初期化
注例:公共静的INT A = 1;変数に、この段階で、メモリに割り当てられ、およびデフォルト値を初期化します。
ダブル0、 - - 0.0、ここでデフォルト値はデータ型、すなわちINTに応じて決定されるであろう= 1に解決されないヌル、 -ブール-偽、オブジェクト操作は= 1行われるように等、フォローアップの初期段階で行われます。分析:直接参照シンボルへのクラス参照
負荷に1.2クラスのいくつかの方法
バイナリデータメモリにクラスファイルをロードするクラスローダを参照し、にそれをドロップ方式エリア、および作成するためにメモリを割り当てるのjava.lang.Classオブジェクトを(JVMの仕様では、ホットスポットを置くClassオブジェクトを、置く場所を必要としません。 )ゾーンの方法にかかわらず、持っている、理由の唯一のクラスのオブジェクトが存在するであろうどのように多くのインスタンスオブジェクトクラスののあるプロセス領域にクラスデータ構造をパッケージするために使用されます。
負荷へのクラスの方法:
- ローカルクラスファイル、クラスパスの下のようなクラスファイル
- クラスファイルをダウンロードするにはネットワークを介して、
- などのzip、jarファイルのパッケージアーカイブから抽出クラスファイル
- 独自のデータベースからの読み込みクラスファイル
- クラス、ダイナミック剤などのファイル、およびAOPセクションに、ソースファイルをコンパイルします
1.3要約ポイント
- 静的変数では、唯一の直接クラスの静的変数フィールドを定義し、初期化されます
- クラスが初期化されると、親クラスが初期化を完了するために最初にする必要があり
2.クラスローダ
JVMは、クラスファイルをロードしたクラスパラメータメモリを解析し、このプロセスは、達成するためのクラスローダによって異なります。
最後JVM仮想マシンのライフサイクル4つの理由3.リード
- 手動コールでSystem.exit()
- 通常のプログラム実行が終了
- プログラムは、プログラムの終了で、その結果、例外が発生しました
- ストップJVMにつながるオペレーティングシステムの異常、
クラスのアクティブおよびパッシブの使用4.
長いほど、Javaクラスやインターフェイスを使用する最初の取り組み状況は、それらを初期化します
4.1は、積極的なシーンの7種類を使用しました
- オブジェクトをインスタンス化します
- クラスの静的変数を呼び出し、静的変数の割り当てを設定します
- 静的メソッド呼び出しクラス
- 反射ベースの処理を使用して、例えば、インスタンス化するClass.forNameのオブジェクト
- サブクラスの例は、その親クラスを使用するためのイニシアチブをとるためにバインドされているときに、親子関係を継承するため
- JVM仮想マシンは、現在のメインクラスの実行として、クラスの起動クラスとして同定されています
- 後jdk1.7については、結果が初期化されていない対応するクラスを呼び出すための言語の動的なプロセスをサポートし、初期化
4.2受動的使用
積極的に受動的な使用、受動的な使用は、クラスをリードするように初期化されていない機能です使用されていません。