您好,欢迎来到汇意旅游网。
搜索
您的当前位置:首页正文

java内部类的内存泄漏原因

2024-07-16 来源:汇意旅游网

原因分析

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内部类的内存泄漏原因,希望对大家有所帮助。更多Java学习指路:

本教程操作环境:windows7系统、java10版,DELL G3电脑。

Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务