内存泄露简述

来源:互联网 发布:电话号码数据库 编辑:程序博客网 时间:2024/06/03 18:13

内存泄露是指 系统无法回收不再使用的内存,在java中,我们常常申请一定的内存,但由于我们代码编写的错误导致内存无法释放,这就是最直接的内存泄露。

下面看一下经典的内存泄露的代码示例:

Vector v = new Vector(10);
for (int i = 1; i<100; i++)
{Object o = new Object();
v.add(o);
o = null;
}//


这里我们看一下。我们循环申请了Object对象,并且将对象放入一个Vector 中,如果仅仅释放引用本身,那么Vector 仍然引用该对象,所以这个对象对GC 来说是不可回收的。因此,如果对象加入到Vector 后,还必须从Vector 中删除,最简单的方法就是将Vector对象设置为null。


Object o = new Object();

其实我们通过new Object() 来创建对象,o是这个对象的引用,就是说我们通过声明o可以找到新创建的object对象,但是o并不是这个对象。

就好比o是一个门牌号,通过这个号码可以找到相应的房间,但是o并不是这个房间。


而v.add(o);相当于把门牌号放入进去,及时将这个引用设置为null ,vector还是可以通过内部信息找到对象,所以这个对象一直被引用,不是垃圾,无法回收。


0 0
原创粉丝点击