blog

Javaクラスのロードとリフレクションの仕組みを深く理解する

マーカークリアメソッド:実装が簡単で、メモリの断片化が生じやすく、大きなオブジェクトは格納できません。 ロード: このフェーズでは、このクラスを表すオブジェクトをメモリ上に生成します。 検証: このフ...

Jul 28, 2020 · 2 min. read
シェア

I. クラス・ローディングとリフレクションのメカニズム

スレッド・プライベート領域:メソッド領域、仮想マシン・スタック スレッド・シェアード領域:ローカル・メソッド領域、Java ヒープ、プログラム・カウンタ

ごみ収集

回復アルゴリズム

マーカー除去法:実装が簡単、メモリが断片化しやすい、大きなオブジェクトを保存できない

コピー・アルゴリズム:マーク・アンド・イレーズ法の欠点を補うため、メモリ空間の消費量が非常に大きい 生存オブジェクトが多く、効率が非常に低い

マーキング圧縮アルゴリズム:古い時代のアルゴリズムに適用され、マーキングがコピーされていない、一端に圧縮され、境界オブジェクトをクリーンアップし、効率が遅く、メモリ空間を移動すると、ユーザーに速度の影響を与えるでしょう

世代別コレクション:新世代の複製アルゴリズム、旧世代のマーカー圧縮アルゴリズム

JVMクラス読み込みメカニズム

ロード : このフェーズでは、クラスを表す java.lang.Class オブジェクトをメモリ内に生成します。検証:このフェーズでは、クラス・ファイルのバイト・ストリーム内の情報が仮想マシンの要件を満たし、仮想マシンのセキュリティーを脅かさないことを確認します。準備: クラス変数用のメモリの正式な割り当てとクラス変数のセットアップ 初期化フェーズ、メソッド領域のメモリの割り当て 解析: 仮想マシンのメモリ内定数のプールで、直接参照をシンボリック参照に置き換えるプロセス。シンボリック参照は、クラス・ファイル内の CONSTANT_Class_info 型の定数です。初期化:最後の段階、あなたはロードフェーズでクラスローダをカスタマイズすることができます、他の操作は、jvmによって支配され、初期化フェーズでは、Javaのプログラムコードで定義されたクラスの実際の実装であり、初期化フェーズでは、クラスのコンストラクタのメソッドプロセスの実装です。4.反射:オブジェクトの種類に対応するクラスのコンポーネント。

クラスオブジェクトの取得

クラスのプロパティの取得

getField(String fieldName) プロパティ名に従ってパブリック・プロパティ・オブジェクトを取得 getDeclaredFiled(String filedName) プロパティ名に従って指定されたプロパティ・オブジェクトを取得 アクセス修飾子を無視 getFiled() すべてのパブリック・プロパティを取得 getDeclaredFields() すべてのプロパティを取得します。

クラスのメソッドの取得

クラスでのコンストラクタの取得

リフレクションによってクラスのプロパティとメソッドを取得することに加えて、コンストラクタ情報を取得することも可能です。 関連するAPIはプロパティとメソッドのものと同じですが、戻り値の型がコンストラクタまたはコンストラクタ[]である点が異なります。

Read next

Rxモデルと地図の原理

オブザーバー・パターン\nRxのデザインパターンは、実はObserverパターンを偽装したものなので、まず標準的なObserverパターンを理解する必要があります。\nこれが標準的なオブザーバー・パターンです。とてもシンプルです。\nRx フック\n\nコードの断片から始めましょう:\n(n

Jul 27, 2020 · 6 min read