package mytest;
/**
* 栈空间异常:<BR>
* 场景一:OutOfMemoryError线程请求的栈深度大于虚拟机所允许的最大深度。即栈的个数太多,也可理解为线程数太多。
* 解决方案:此时可以通过降低-Xss值(每个线程所用空间)来提高线程数<BR>
* 场景二:StackOverFlowError,虚拟机在扩展栈时无法申请到足够的空间。即超出-Xss对单个栈空间的限制。比如递归调用时经常会出现该异常<BR>
* 解决方案:提高-Xss值<BR>
*/
public class StackErrorTest {
static class StackOverFlowError {
private int stackLength = 1;
public void statckLeak() {
stackLength++;
statckLeak();
}
public static void main(String[] args) {
StackOverFlowError sof = new StackOverFlowError();
sof.statckLeak();
}
}
}
输出
Exception in thread “main” java.lang.StackOverflowError
at mytest.StackErrorTest StackOverFlowError.statckLeak(StackErrorTest.java:16)
at mytest.StackErrorTest StackOverFlowError.statckLeak(StackErrorTest.java:16)
at mytest.StackErrorTest StackOverFlowError.statckLeak(StackErrorTest.java:16)