1。アクセシビリティ分析(ルート検索)アルゴリズム
JVMは、オブジェクトがアクセシビリティ分析によって生き残るかどうかを判断します。このアルゴリズムの基本的なアイデアは、 GC Rootsと呼ばれる一連のオブジェクトを出発点として使用し、これらのノードから下向きに検索することです。検索されたパスは、参照チェーンと呼ばれます。オブジェクトが参照チェーンなしでGC Rootsに接続されている場合、このオブジェクトが利用できないことが証明されます。以下の図では、objects object1 、 object2 、 object3 、およびobject4利用可能なオブジェクトです。 object5 、 object6 、およびobject7は互いに関連していますが、 GC Rootsに到達できないため、リサイクル可能なオブジェクトであると判断されます。
Java言語では、GCルーツとして使用できる次のオブジェクトには次のものがあります。
1。仮想マシンスタックで参照されているオブジェクト(スタックフレームのローカル変数)。
2。メソッド領域のクラス静的属性によって参照されるオブジェクト。
3。メソッド領域の定数によって参照されるオブジェクト。
4。ローカルメソッドスタックのJNI(ネイティブメソッド)が参照するオブジェクト。
2。スプリングソースコード
spring 、次の実装構造を使用して、インターフェイスBeanFactoryを実装するクラスを通じてオブジェクトを作成します。
Simplejndibeanfactory.java
パブリッククラスSimpleJndibeanFactory拡張jndilocatorsupportを実装するbeanfactory {private final set <string> shareableresources = new Hashset(); // newを使用して作成されたマップはスタックで参照されるオブジェクトであり、GCルーツオブジェクトプライベート最終マップ<string、object> singletonobjects = new Hashmap();として使用できます。プライベート最終マップ<String、class <?>> resourceTypes = new Hashmap(); public simplejndibeanfactory(){this.setresourceref(true); } public void addshareableresource(String shareableresource){this.shareableresources.add(shareableresource); } public void setshareableresources(string ... shareableresources){this.shareableresources.addall(arrays.aslist(shareableresources)); } public Object getBean(String name)throws BeanSexception {return this.getBean(name、object.class); }}StaticListableBeanFactory.java
パブリッククラスStaticListableBeanFactoryは、listablebeanFactory {プライベート最終マップ<String、Object> Beans; public StaticListableBeanFactory(){// newを使用して作成されたマップは、スタックで参照されるオブジェクトであり、GC Rootsオブジェクトとして使用できます。 } public staticListableBeanFactory(Map <String、Object> Beans){assert.notnull(beans、 "beans map be null"); this.beans = beans; } public void addbean(string name、object bean){this.beans.put(name、bean); }}上記のソースコードから、オブジェクトはマップに保存されていることがわかります。 mapsingletonObjectsがシングルトンオブジェクトを保存するために使用されます。 map singletonObjectsとbeans (コンストラクターの新機能)は両方とも、強力new参照であり、 GC Rootsオブジェクト(仮想マシンスタックで参照されるオブジェクト(スタックフレーム内のローカル変数)で参照されるオブジェクト)として条件を満たします。この方法で作成されたオブジェクトは、 mapのGC Roots对に接続されます。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容があなたの研究や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。