所有分类
  • 所有分类
  • 未分类

Java-内部类持有外部类导致内存泄露的原因和解决方案

简介

本文介绍Java内部类持有外部类导致内存泄露的原因以及其解决方案。

为什么内部类持有外部类会导致内存泄露?

非静态内部类会持有外部类,如果有地方引用了这个非静态内部类,会导致外部类也被引用,垃圾回收时无法回收这个外部类(即使外部类已经没有其他地方在使用了)。

解决方案

  1. 不要让其他的地方持有这个非静态内部类的引用,直接在这个非静态内部类执行业务。
  2. 将非静态内部类改为静态内部类。
    1. 内部类改为静态的之后,它所引用的对象或属性也必须是静态的,所以静态内部类无法获得外部对象的引用,只能从 JVM 的 Method Area(方法区)获取到static类型的引用。

 相关网址

匿名内部类的内存泄露:Java–匿名内部类持有外部类导致内存泄露的原因和解决方案 – 自学精灵

为什么要持有外部类

此内容仅限VIP查看,请先
0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录