JAVA虚拟机栈(Java Virtual Machine Stacks)抛出StackOverflowError和OutOfMemoryError的异常的示例
Posted wodediqizhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA虚拟机栈(Java Virtual Machine Stacks)抛出StackOverflowError和OutOfMemoryError的异常的示例相关的知识,希望对你有一定的参考价值。
当虚拟机栈空间无法扩展或者在创建线程时无法分配足够的内存时,会抛出 StackOverflowError
和 OutOfMemoryError
异常。
以下是两个示例:
1.StackOverflowError
public class StackOverflowExample
public static void main(String[] args)
stackOverflowMethod();
private static void stackOverflowMethod()
stackOverflowMethod();
上面的代码在调用 stackOverflowMethod()
时,会不断地进行递归调用,导致栈空间不断压入方法栈帧,最终抛出 StackOverflowError
异常。
2.OutOfMemoryError
public class OutOfMemoryExample
public static void main(String[] args)
int threadCount = 0;
while (true)
new Thread(() ->
try
Thread.sleep(1000000);
catch (InterruptedException e)
e.printStackTrace();
).start();
threadCount++;
System.out.println("Thread count: " + threadCount);
上面的代码会不断地创建线程,每个线程会休眠一段时间后再退出。如果创建线程的速度过快,而且每个线程休眠时间过长,就会导致栈空间不足,从而抛出 OutOfMemoryError
异常。
以上是关于JAVA虚拟机栈(Java Virtual Machine Stacks)抛出StackOverflowError和OutOfMemoryError的异常的示例的主要内容,如果未能解决你的问题,请参考以下文章