public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_CAPACITY]; } public void push(Object e){ ensureCapacity(); elements[size++] = e; } pu…
内存泄漏的第一个常见来源是存在过期引用. 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[D…
本文参考 本篇文章参考自<Effective Java>第三版第七条"Eliminate obsolete object references" Memory leaks in garbage-collected languages (more properly known as unintentional object retentions) are insidious 在具备垃圾回收器的语言中,内存泄漏(或称无意识对象保留)往往十分隐蔽,看下面一个自定义栈程序的例子 p…