一个栈溢出的demo
作者:bin- 1.虚拟机运行时运用一种叫做栈桢的数据结构,保存上下文数据。
- 2.每一个方法的调用都伴随这栈桢的入栈操作,相应的,方法的返回则表示栈桢的出栈操作。
- 3.如果方法调用时,局部参数相对较多,那么栈桢中的局部变量就大,因此单个方法调用所需的栈空间也会比较多
下面是一个栈溢出的demo:
package com.zengbingo.outOfmemoryError; public class TestJVMStack { private int count = 0; public void rescursion(long a , long b, long c){ long d=0,e=0,f=0; count++; rescursion(a,b,c);//递归 } public void testStatck(){ try { rescursion(1L,2L,3L); } catch (Throwable e) { System.out.println("深度为" + count); e.printStackTrace(); } } public static void main(String[] args) { TestJVMStack testJVMStack = new TestJVMStack(); testJVMStack.testStatck(); } }
输出结果
深度为5176 java.lang.StackOverflowError at com.zengbingo.outOfmemoryError.TestJVMStack.rescursion(TestJVMStack.java:6)