java最佳实践——内部类访问外部类静态变量

标签 java garbage-collection inner-classes

class OuterClass {
    static int j=99;

    static class InnerClass {

        public void doSomething() {
            while(true)
                OuterClass.j= 100;
            } 
        }
    } 
}   

使用上面的代码,当 OuterClass 需要垃圾收集时,垃圾收集是否有任何问题,但可以说 doSomething 正在引用一个静态变量,这会是一个问题吗?我关心的是内部类通过访问变量 j 引用了外部类,我想知道这是否会影响 OuterClass 成为 GC。

最佳答案

虽然您将其命名为InnerClass,但它不是内部类。它只是一个static 嵌套类。

此类的实例不引用封闭类的任何实例。此外,您引用了封闭类的 static 字段。绝对没有对 OuterClass 的任何实例的引用。

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

我是不是误解了你的问题?你问的是垃圾收集的类吗?

关于java最佳实践——内部类访问外部类静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28726420/

相关文章:

c# - 为什么 Roslyn 中有这么多对象池的实现?

.net - Finalize() 期间的异常 : what methodology are you using to detect garbage collector-time exceptions?

java - 线程是否开始使用与其他对象相同的方式收集 'new Thread(r).start()' 垃圾?

java - 将变量从外部类传递到内部类的最佳方法

java - GWT AsyncCallback - 内部类共享

java - 以 Java 特殊行为访问静态内部类 - 为什么?

java - 在不同时区之间格式化时间的正确方法是什么?

java - 可运行的 jar 找不到库

java - 从 URL 绘制图像

java - 断言响应主体为空列表,放心