Java虽然有自己的垃圾回收机制,但是并没有那么的智能,对于被引用的对象,就算我们已经不在使用它了,但是Java的回收机制是不会回收它们的,人们称之为“内存泄漏”。
以下为三种不同的内存泄漏场景,极其优化方案
1、只要类自己管理内存,就该警惕内存泄漏问题
例如Stack类自己管理内存,在元素出栈,忘记设置为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 element