助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
[TOC] # 常见的内存泄漏情况及解决方案 长生命周期的对象持有短生命周期的引用,就很可能会出现内存泄露。 1、非静态内部类持有外部类引用 且 非静态内部类对象生命周期大于外部类对象生命周期 * 非静态内部类对象为静态的 * 非静态内部类有耗时操作,如多线程及监听器 * 非静态内部类型的Handler有未处理消息或正在处理消息 * 解决方案:非静态内部类改为静态内部类,切断引用;或强制使非静态内部类对象生命周期小于等于外部类对象生命周期(结束线程、清空消息队列等) 2、单例模式使用声明周期短的Context如Activity * 解决方案:优先使用生命周期更长的ApplicationContext 3、连接未及时释放 * 解决方案:及时释放各种数据库连接、Socket连接、IO连接等 4、静态集合未及时删除无用对象 * 解决方案:及时删除静态集合中的无用对象 5、HashSet存储对象的属性被修改,调用HashSet的remove方法失效无法移除对象