栈溢出。Java里面每个线程都有独立的、固定大小的栈空间, Java在解释执行的时候采用的是栈式的架构。 方法调用、方法内的局部变量都是在栈空间申请的。 空间的大小依赖于JDK版本,JDK1.6应该是512K,超过了这个空间就会产生StackOverFlow。
死循环本身是不会StackOverflow的,只有无限递归的时候会出现。原则上循环嵌套次数本身是没有限制的,限制的是占用的栈空间,如果你的方法里定义了很多很多变量,栈空间就会用完得比较快。如果你的软件不是很庞大,那么你的程序中出现了无限的递归的情况可能产生这个错误。
死循环等造成内存溢出