消除过期的对象的引用

2019-03-10  本文已影响0人  Aluha_f289
一、消除过期的对象的引用的好处

好处1、防止内存泄漏,导致磁盘交换,甚至会导致程序失败
好处2、如果错误地解除引用,程序就会立即抛出NULL指针异常,而不是错误的运行下去。尽快地检测出程序中的错误总是有益的

import java.util.Arrays;
import java.util.EmptyStackException;

/**
 * 消除过期的对象的引用
 */
public class Stack {
    private Object[] elements;
    private int size = 0;
    private static final int DEFAULT_INITIAL_CAPACITY = 16;

    public Stack(){
        elements = new Object[DEFAULT_INITIAL_CAPACITY];
    }

    public void push (Object e){
        ensureCapacity();
        elements[size++] = e;
    }

    //内存泄漏,导致磁盘交换,甚至会导致程序失败
//    public Object pop(){
//        if (size == 0)
//            throw new EmptyStackException();
//        return elements [--size];
//    }
    //修复方法,一旦对象引用过期,只需要清空这些引用

    public Object pop(){
        if (size == 0)
            throw new EmptyStackException();
        Object result = elements[--size];
        elements[size] = null;//清空过期对象引用
        return result;
    }

    private void ensureCapacity(){
        if ( elements.length == size){
            elements = Arrays.copyOf(elements,2 * size +1);
        }
    }
}

上一篇 下一篇

猜你喜欢

热点阅读