[关闭]
@Toby-wei 2016-08-27T02:25:25.000000Z 字数 362 阅读 1215

Java中的内存泄漏问题

jvm


内存泄漏的对象有这么两个特点:

  • 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连
  • 其次,这些对象是无用的,即程序以后不会再使用这些对象

代码如下:

  1. Vector v=new Vector(10);
  2. for (int i=1;i<100; i++) {
  3. Object o=new Object();
  4. v.add(o);
  5. // 此时,所有的Object对象都没有被释放,因为变量v引用这些对象
  6. o=null;
  7. }

画个示意图就是这样子的
此处输入图片的描述

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注