被问到的奇葩问题

前几天去面试时遇到个技术问了个让我一脸懵逼的问题,大概是他在ActivityB中需要ActivityA的实例,所以他在ActivityA中搞了个静态变量引用ActivityA实例。然后直接在ActivityB中使用。

至于我为啥懵逼,那是因为他之前刚问过我内存泄漏的问题
内存泄漏嘛,简单说就是该释放的内存没释放掉

相信大家都知道在android中static修饰的变量的生命周期等同于整个app的运行周期。如果如上文中那么做,假设不把ActivityA中引用自己的静态变量置为null,那么ActivityA的实例就会一直存在直到app运行结束,即使在ActivityA中调用finish()来关闭ActivityA,onDestroy即使被调用ActivityA也依然存在,ActivityA中类变量也没有释放掉,内存空间也依然被占用。
这就是非常典型的内存泄漏嘛。

所以记下这个来时时提醒自己,项目中慎用static。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 循环引用:http://ios.jobbole.com/82077/类别的作用功能:1.扩充现有类的功能2.对现有...
    得一切从简阅读 3,459评论 0 1
  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供...
    简欲明心阅读 90,088评论 17 311
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,840评论 3 83
  • 一、运行时数据区域 Java虚拟机管理的内存包括几个运行时数据内存:方法区、虚拟机栈、本地方法栈、堆、程序计数器,...
    加油小杜阅读 5,389评论 1 15