码迷,mamicode.com
首页 > 编程语言 > 详细

java内存泄露

时间:2016-01-09 10:56:15      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的。

java的内存泄漏其实称为无意识的对象保存更为合适
 
例如弹栈操作:
public Object pop(){
    if(0 == size)
        throw new EmptyStackException();
    return elements[--size];
}
 
弹栈时:
被return的是elements[size-1],也就是栈顶元素,此后size指针--,
虽然栈顶元素被弹出,但是它并没有被GC回收,因为它还保存着对对象的引用,
正确的做法应该是:
public Object pop(){
    if(0 == size)
        throw new EmptyStackException();
    Object result = elements[--size];
    elements[size] = null;
    return result;
}
 
PS:
个人感觉,数组存储的是对象的引用

 

java内存泄露

标签:

原文地址:http://www.cnblogs.com/lnas01/p/5115538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!