内存泄露简述

内存泄露是指 系统无法回收不再使用的内存,在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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值