package com.main;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static int c = 0;
public static int d = 0;
public static List<String> list = new ArrayList<String>();
// 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。--无限递归
// 如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。 --占用的空间太大
public static void main(String[] args) {
Main main = new Main();
main.testStackOverflowError(c);
// main.addString(d);
}
public void testStackOverflowError(int c) {//StackOverflowError
System.out.println(c++);//10444
testStackOverflowError(c);
}
public void addString(int d) {//OutOfMemoryError
while (true) {
java,内存溢出和栈溢出实例
最新推荐文章于 2024-08-17 10:31:01 发布
本文通过实例代码分析了Java中的内存溢出(OutOfMemoryError)和栈溢出(StackOverflowError)问题。在无限递归的`testStackOverflowError`方法中,当线程请求的栈深度超过虚拟机最大限制时引发栈溢出;而在`addString`方法中,由于不断向ArrayList添加大量字符串,导致堆内存耗尽,从而抛出内存溢出异常。
摘要由CSDN通过智能技术生成