栈溢出

来源:互联网 发布:黑暗之魂 世界观 知乎 编辑:程序博客网 时间:2024/05/17 20:29

虚拟机栈和本地方法栈有下面两种异常:

线程请求的栈深度大于虚拟机允许最大栈深度,抛StackOverflowError

虚拟机栈扩展时无法申请到足够的空间,抛OutOfMemoryError

public class Test {public int stackLength = 1;public void stackLeak(){stackLength++;stackLeak();}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubTest t = new Test();try{t.stackLeak();} catch(Throwable e){System.out.print("stack legth:\n"+t.stackLength);throw e;}}}

参数设定

-verbose:gc  -Xss1M -XX:+HeapDumpOnOutOfMemoryError -XX:SurvivorRatio=8


运行结果

stack legth:29272
Exception in thread "main" java.lang.StackOverflowError
at Test.stackLeak(Test.java:10)
at Test.stackLeak(Test.java:10)
at Test.stackLeak(Test.java:10)



原创粉丝点击