首页 > 解决方案 > 内存中的内部类在哪里?

问题描述

我们知道一个类通常被加载到元空间中,但是非静态内部类呢?加载后它去了哪里?

class OuterClass {
    /**
     * Where is this class? would this class goes to the meta space?
     */
    class InnerClass{
        public void method(){
            /**
             * And where is this class?
             */
            class InnerClassInMethod{
                public void method(){
                    System.out.println("Hello");
                }
            }

            new LocalClass().method();
        }
    }
}

什么时候会加载这个类?它会和外部类一样被加载还是延迟到一个实例被请求?而且,同样的问题,他们将被卸载?

标签: javainner-classesnon-staticmetaspace

解决方案


MetaSpace也是。static和类之间的唯一区别non-staticnon-static类包含对this父类的引用。


推荐阅读