专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
芋道源码  ·  面试官:int(1) 和 int(10) ... ·  6 小时前  
Java编程精选  ·  330个“假补丁”差点混入主线?LinusT ... ·  昨天  
芋道源码  ·  入职第一天,看了公司代码,牛马沉默了 ·  昨天  
芋道源码  ·  Spring-Security ... ·  昨天  
51好读  ›  专栏  ›  ImportNew

Java 内部类持有外部类导致内存泄露

ImportNew  · 公众号  · Java  · 2023-07-27 09:49

正文

请到「今天看啥」查看全文


{ private String outerName = "Tony" ;
static class Inner { private String name;
public Inner ( ) { this .name = outerName; } }
Inner createInner ( ) { return new Inner(); } }
public class Demo { public static void main ( String[] args ) { Outer.Inner inner = new Outer().createInner(); System. out .println(inner); } }

报错:


实例:持有外部类


代码

package org.example.a;
class Outer{ class Inner {
}
Inner createInner() { return new Inner(); }}
public class Demo { public static void main(String[] args) { Outer.Inner inner = new Outer().createInner(); System.out.println(inner); }}

断点调试

可以看到:内部类持有外部类的对象的引用,是以“ this$0 ”这个字段来保存的。


实例:不持有外部类







请到「今天看啥」查看全文