posts - 54,  comments - 1,  trackbacks - 0
  • GC的工作原理

Java使用有向图的方式进行内存管理,可以消除引用循环的问题,例如有三个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以回收它们的。这种方式的优点是管理内存的精度很高,但是效率较低。

另外一种常用的内存管理技术是使用计数器,例如COM模型采用计数器方式管理构件,它与有向图相比,精度行低(很难处理循环引用的问题),但执行效率很高。

  • Java中的内存泄露

由上面的GC工作原理可以知道,只要对象被应用就不会被GC回收.所以如果我们引用对象后没有释放的化就会出现内存泄漏的问题,如下面一段代码:

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

上面的程序中虽然看起来我们释放了对象o,但是我们释放的只是应用,这个对象仍然被v应用着,所以GC不能回收对象o,除非将它从v中删除.

posted on 2005-08-08 19:01 ZhuJun 阅读(178) 评论(0)  编辑  收藏 所属分类: 开发手记

只有注册用户登录后才能发表评论。


网站导航:
 

蜀中人氏,躬耕于珠海

<2005年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(2)

随笔分类(71)

随笔档案(54)

博客

文档

站点

论坛

搜索

  •  

积分与排名

  • 积分 - 49833
  • 排名 - 982

最新评论

阅读排行榜