java最佳实践 - 由内部类访问的外部类静态变量

j2e*_*nue 1 java garbage-collection inner-classes

class OuterClass {
    static int j=99;

    static class InnerClass {

        public void doSomething() {
            while(true)
                OuterClass.j= 100;
            } 
        }
    } 
}   
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,当OuterClass需要垃圾收集时,垃圾收集是否有任何问题,但是让我们说doSomething引用静态变量会是一个问题吗?我所关心的是内部类通过访问变量j来引用外部类,并且我想知道这是否会影响作为GC的OuterClass.

Sot*_*lis 5

虽然你已经命名了它InnerClass,但它不是一个内部类.它只是一个static嵌套类.

这样一个类的实例没有引用封闭类的任何实例.更重要的是,你引用了static封闭类的一个领域.绝对没有提及任何实例OuterClass.

您的任何内容都InnerClass不能阻止该类型的实例OuterClass被垃圾回收.

我误解了你的问题了吗?你在问垃圾收集的课程吗?