zoukankan      html  css  js  c++  java
  • java内存泄露

    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:
    个人感觉,数组存储的是对象的引用
  • 相关阅读:
    phpHttp请求头
    第八周学习总结
    梦断代码阅读笔记-03
    第七周学习总结
    针对自己开发项目的NABC的认知
    梦断代码阅读笔记
    第六周学习总结
    第五周学习总结
    移动端疫情展示
    第四周学习总结
  • 原文地址:https://www.cnblogs.com/lnas01/p/5115538.html
Copyright © 2011-2022 走看看