Tuesday, April 14, 2015

JVM Inner Class

Invokevirtual ...getClass() 之后马上 pop 掉 原来是JVM 在 check null;inner class has access to outer class 的所有 private fields原来是JVM在内部类创建了一个field this$0 通过constructor 把外部类对象传进来了, 

创建内部类的时候自动创建了一个参数是 外部类 的 constructor,
外部类实例被保存在  final Subclass this$0, 这就是非静态类会导致外部类无法被回收的原因


以下是 JVM check null paradigm


No comments:

Post a Comment