美文网首页
消除过期的对象的引用

消除过期的对象的引用

作者: Aluha_f289 | 来源:发表于2019-03-10 21:17 被阅读0次
一、消除过期的对象的引用的好处

好处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);
        }
    }
}

相关文章

  • 消除过期的对象引用

    第6条:消除过期的对象引用 1. 为什么要消除过期的对象引用 java虽然有自己的垃圾回收机制,但是并没有那么的智...

  • 消除过期的对象引用

    你能看出以下代码哪里内存泄漏吗? 答案是: pop()方法存在内存泄漏。 内存泄漏可以称为“ 无意识的对象保持(u...

  • 消除过期的对象引用

    什么是过期的对象引用? 我们通过简单的栈实现来引入过期的对象引用。 实际上,这段程序中并没有很明显的错误。无论如何...

  • 消除过期的对象引用

    某些类内部维护着对象的过期引用(指永远也不会再被解除的引用),这些对象不会被当作垃圾回收,产生了内存泄露(这类内存...

  • 消除过期的引用对象

    C或者C++是手工管理内存语言,java语言是自带垃圾回收,程序员的工作就很容易,因为当你用完了对象之后,他会被自...

  • 消除过期的对象的引用

    一、消除过期的对象的引用的好处 好处1、防止内存泄漏,导致磁盘交换,甚至会导致程序失败好处2、如果错误地解除引用,...

  • 1.7消除过期的对象引用

    1.7消除过期的对象引用 1.7.1 ​ 以下代码并没有明显的错误,无论如何测试,它都会成功通过每一项测...

  • 6.消除过期的对象引用

    我们用java管理内存是十分容易的,因为jvm会帮我管理内存的释放,但是这不意味着我们不用担心内存的事情了 造成内...

  • 项目7:消除过期的对象引用

    ITEM 7: ELIMINATE OBSOLETE OBJECT REFERENCES  如果你从手动管理内存的...

  • 7. 消除过期的对象引用

    当一个对象已经没有用时, 记得要手动消除对象引用, 以避免内存泄露 示例代码 这样对象之间的关系被切除, 未被引用...

网友评论

      本文标题:消除过期的对象的引用

      本文链接:https://www.haomeiwen.com/subject/rpgppqtx.html