您的位置:首页 > 编程语言 > Java开发

java中的内存泄漏问题

2016-06-28 08:24 246 查看
Java 是通过垃圾收集器(Garbage Collection GC)自动管理内存的回收 程序员不需要通过调用函数来释放内存 但它只能回收无用并且不再被其它对象引用的那些对象所占用的空间 GC 监控对象的运行状态 其中一种是采用可达测试 Reachability Test[1]检测对象是否从根可达 GC 回收对失去引用 从根不可达的对象但仍被引用 直接或间接被根引用 的对象不一定仍有用 对已无用对象的引用导致Java 内存泄漏。

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

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


此时 所有的 Object 对象都没有被释放 因为变量 v 引用这些对象 实际上无用 而还被引用的对象 GC 就无能为力了(事实上 GC 认为它还有用) 这一点是导致内存泄漏最重要的原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  内存泄露 java