将外部对象类对象传递给静态内部对象会造成内存泄漏

时间:2019-01-02 11:53:20

标签: java memory-leaks

将外部对象类对象传递给静态内部对象会导致内存泄漏吗?

如何检查它是否会造成内存泄漏?

下面是我在内部和外部类的创建位置所要寻找的内容,以及我打算使用和传递对象的方式。

我主要的疑问是因为我认为即使在某个时候即使不再从任何地方都引用OuterClass对象,也不会进行GC,因为InnerClass(这是一个STATIC类)持有该对象的引用。它。因此,我认为这会导致内存泄漏。

public class OuterClass {

    private int id;
    private String name;

    public static class InnerClass{
        OuterClass outerClass;

        public InnerClass(OuterClass outerClass) {
            this.outerClass = outerClass;
        }

        public void printOuterClassDetails(){
            System.out.println(outerClass.getId() + " | " + outerClass.getName());
        }
    }

    public OuterClass(int i, String string) {
        this.id = i;
        this.name = string;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        OuterClass outerClass = new OuterClass(1, "A");
        OuterClass.InnerClass innerClass = new InnerClass(outerClass);
        innerClass.printOuterClassDetails();
    }

}

0 个答案:

没有答案