商业网站的特点17173金币交易平台
商业网站的特点,17173金币交易平台,网页设计html代码大全p,安贞网站建设内存泄漏可能的原因有很多种#xff1a;内存泄漏可能原因静态集合类引起内存泄漏静态集合的生命周期和 JVM 一致#xff0c;所以静态集合引用的对象不能被释放。public class OOM {static List list new ArrayList();public void oomTests(){Object obj new Object();list.…内存泄漏可能的原因有很多种内存泄漏可能原因静态集合类引起内存泄漏静态集合的生命周期和 JVM 一致所以静态集合引用的对象不能被释放。public class OOM { static List list new ArrayList(); public void oomTests(){ Object obj new Object(); list.add(obj); } }单例模式和上面的例子原理类似单例对象在初始化后会以静态变量的方式在 JVM 的整个生命周期中存在。如果单例对象持有外部的引用那么这个外部对象将不能被 GC 回收导致内存泄漏。数据连接、IO、Socket等连接创建的连接不再使用时需要调用close方法关闭连接只有连接被关闭后GC 才会回收对应的对象ConnectionStatementResultSetSession。忘记关闭这些资源会导致持续占有内存无法被 GC 回收。try { Connection conn null; Class.forName(com.mysql.jdbc.Driver); conn DriverManager.getConnection(url, , ); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(....); } catch (Exception e) { }finally { //不关闭连接 } }变量不合理的作用域一个变量的定义作用域大于其使用范围很可能存在内存泄漏或不再使用对象没有及时将对象设置为 null很可能导致内存泄漏的发生。public class Simple { Object object; public void method1(){ object new Object(); //...其他代码 //由于作用域原因method1执行完成之后object 对象所分配的内存不会马上释放 object null; } }hash值发生变化对象Hash值改变使用HashMap、HashSet等容器中时候由于对象修改之后的Hah值和存储进容器时的Hash值不同所以无法找到存入的对象自然也无法单独删除了这也会造成内存泄漏。说句题外话这也是为什么String类型被设置成了不可变类型。ThreadLocal使用不当ThreadLocal的弱引用导致内存泄漏也是个老生常谈的话题了使用完ThreadLocal一定要记得使用remove方法来进行清除。