堆中主要存储的是对象,所以一直不断的创建对象则会导致堆中的内存溢出。
栈中主要存储的每个方法执行时创建的栈帧,所以方法的递归调用会导致栈内存溢出。
下列给出两种内存溢出的实例代码:
/** 堆内存溢出 */
public class HeapOutOfMemory {
public static void main(String[] args) {
List list = new ArrayList();
list.add(new HeapOutOfMemory());
}
}
/** 栈内存溢出 */
public class StackOutOfMemory {
public static void test() {
test();
}
public static void main(String[] args) {
while (true) {
test();
}
}
}