欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

内存泄漏/溢出/垃圾回收

程序员文章站 2022-07-14 18:33:25
...

模拟堆栈,无垃圾回收,一直添加元素,造成内存溢出

class StackList{

    Object[] elements;

    int index = 0 ; //当前的索引值

    public StackList(){
        this.elements = new Object[3];
    }
    //添加内容
    public void add(Object o){
        //添加元素之前应该要先检查是否容量够用。
        ensureCapcity();
        elements[index++] = o;
    }


    //出栈: 删除集合的元素,并且返回。
    public Object pop(){
        int tempIndex = --index;
        Object o = elements[tempIndex];
        elements[tempIndex] = null; //让该位置不再 引用着指定的对象,让垃圾回收期赶快回收该垃圾。否则内存泄露
        return o;
    }
    //检查当前的数组使用够用。
    public void ensureCapcity(){
        if(index==elements.length){
            //计算一个新的长度
            int newLength = elements.length*2;
            elements = Arrays.copyOf(elements, newLength);
        }
    }
    //获取当前的元素 个数
    public int size(){
        return index;
    }

}
相关标签: 内存泄露