Java 内部クラスのメモリ リークの原因は何ですか?

WBOY
リリース: 2023-04-21 23:40:17
転載
1182 人が閲覧しました

原因分析

1. 匿名内部クラスが参照されていない場合、匿名内部クラスのオブジェクトが使い果たされたときにリサイクルされる可能性があります。

2. 内部クラスが外部クラス内でのみ参照されている場合、外部クラスが参照されなくなったときに、外部クラスと内部クラスを GC によって再利用できます。

内部クラスの参照が外部クラス以外の他のクラスから参照されている場合、内部クラスと外部クラスを GC で再利用することはできません。外部クラスが参照されていなくても、内部クラスには依然として外部クラスへの参照)。

public class ClassOuter {
 
    Object object = new Object() {
        public void finalize() {
            System.out.println("inner Free the occupied memory...");
        }
    };
 
    public void finalize() {
        System.out.println("Outer Free the occupied memory...");
    }
}
 
public class TestInnerClass {
    public static void main(String[] args) {
        try {
            Test();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
 
    private static void Test() throws InterruptedException {
        System.out.println("Start of program.");
 
        ClassOuter outer = new ClassOuter();
        Object object = outer.object;
        outer = null;
 
        System.out.println("Execute GC");
        System.gc();
 
        Thread.sleep(3000);
        System.out.println("End of program.");
    }
}
ログイン後にコピー

以上がJava 内部クラスのメモリ リークの原因は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!