读书人

虚拟机栈跟本地方法栈溢出

发布时间: 2012-12-26 14:39:29 作者: rapoo

虚拟机栈和本地方法栈溢出
如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出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)

在-Xms20m -Xmx20m情况下面
上面情况下 -Xss=100k,stack length:3157
当情况如下 -Xss=200k,stack length:8619


读书人网 >编程

热点推荐