虚拟机栈和本地方法栈溢出
如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。
如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。
-Xss 每个线程栈的大小
/** * VM Args:-Xms20m -Xmx20m -Xss100k * * @author zzm */public class JavaVMStackSOF {private int stackLength = 1;public void stackLeak() {stackLength++;stackLeak();}public static void main(String[] args) throws Throwable {JavaVMStackSOF oom = new JavaVMStackSOF();try {oom.stackLeak();} catch (Throwable e) {System.out.println("stack length:" + oom.stackLength);throw e;}}}
stack length:3157Exception in thread "main" java.lang.StackOverflowErrorat JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:12)at JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:12)at JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:12)at JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:12)at JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:12)at JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:12)