package com.hcmony.test.memory;
/**
* <h3>Shenjue.java基本描述</h3>
* <p>
* java.lang.StackOverflowError
* 【原因】:这也内存溢出错误的一种,即线程栈的溢出,要么是方法调用层次过多(比如存在无限递归调用),要么是线程栈太小。
* 【解决】:优化程序设计,减少方法调用层次;调整-Xss参数增加线程栈大小。
* </p>
*
* @author hcmony
* @since V1.0.0, 2018/09/04 15:00
*/
public class StackOverflowError {
int depth = 0;
public void sofMethod(){
depth ++ ;
sofMethod();
}
public static void main(String[] args) {
StackOverflowError error = null;
error = new StackOverflowError();
error.sofMethod();
}
}
结果如下:
Connected to the target VM, address: '127.0.0.1:65405', transport: 'socket'
Exception in thread "main" java.lang.StackOverflowError
at com.hcmony.test.memory.StackOverflowError.sofMethod(StackOverflowError.java:20)
at com.hcmony.test.memory.StackOverflowError.sofMethod(StackOverflowError.java:20)

本文详细解析了Java中StackOverflowError的原因及解决方法,并通过一个递归调用的例子展示了如何触发这一异常。StackOverflowError通常发生在方法调用层次过深或线程栈设置过小的情况下。
1489

被折叠的 条评论
为什么被折叠?



