Java 中的内存泄漏问题

本贴最后更新于 1930 天前,其中的信息可能已经事过景迁
内存泄漏的对象有这么两个特点:
>* 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连
>* 其次,这些对象是无用的,即程序以后不会再使用这些对象

代码如下:
```
Vector v=new Vector(10);
for (int i=1;i<100; i++) {
	Object o=new Object();
	v.add(o);
	// 此时,所有的Object对象都没有被释放,因为变量v引用这些对象
	o=null;	
}
```

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

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

  [1]: http://res.chuang.ba/memory-leak.png
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    170 引用 • 118 回帖 • 2 关注
  • vector
    1 引用
  • 对象
    10 引用 • 44 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...