public class StackOverflowError
extends VirtualMachineError
当应用程序递归太深而发生堆栈溢出时,抛出该错误。
StackOverflowError是由于当前线程的栈满了
,也就是函数调用层级过多导致,比如死循环,或者递归层次过深。
附上thinking in java中的一段代码:p287页
在调用toString()方法时候,this发生类型转换,从InfiniteRecursion转化为String类型。这个过程中需要调用this.toString()方法。既然进入了递归调用,最终到处出错。
package com.thinking.string;
import java.util.ArrayList;
import java.util.List;
public class InfiniteRecursion {
public String toString() {
//An exception occurred: java.lang.StackOverflowError
// return " InfiniteRecursion address: " + this + "\n";
return " InfiniteRecursion address: " + super.toString() + "\n";
}
public static void main(String[] args) {
List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
for (int i = 0; i < 10; i++) {
v.add(new InfiniteRecursion());
}
System.out.println(v);
}
}
参考资料:http://blog.sina.com.cn/s/blog_68f018570100vhcr.html
分享到:
相关推荐
解决java.lang.StackOverflowError
tomcat内存溢出解决办法,错误信息:java.lang.OutOfMemoryError:PermGen space 参考该文档可快速解决内存溢出的问题,服务器:tomcat
java.lang.StackOverflowError 堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。 java.lang.ThreadDeath 线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。 java.lang....
34.java.lang.StackOverflowError 堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。 35.java.lang.ThreadDeath 线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。 36....
如果某个线程的线程栈空间被耗尽,没有足够资源分配给新创建的栈帧,就会抛出 java.lang.StackOverflowError 错误。 线程栈是如何运行的? 首先给出一个简单的程序调用代码示例,如下所示: public class...
该文档对weblogic使用过程中,包括下载,安装,部署运营过程中出现的问题进行了描述和提供了解决方法,比如1. 包引入错误... 3 2. 乱码现象... 3 3. mime-typeType配置问题....7. java.lang.StackOverflowError. 5 等等
去除死循环,解决StackOverflowError错误
SonarQube JSON分析器免责...故障排除如果JSON文件包含一些高度嵌套的对象(超过一百个嵌套级别),则您可能会遇到如下StackOverflowError : Exception in thread "main" java.lang.StackOverflowErrorat com.sonar.ss
栈溢出抛出java.lang.StackOverflowError错误,出现此种情况是因为方法运行的时候栈的深度超过了虚拟机容许的大深度所致。 出现这种情况,一般情况下是程序错误所致的,比如写了一个死递归,有可能造成此种...
关于JVM内存区域的知识对于初学者来说其实是很重要的,了解Java内存分配的原理,这对于以后JAVA的学习会有更深刻的理解。下面来看看详细介绍。
编程中有时会遇到一个系统异常java.lang.StackOverflowError,栈溢出错误,要理解这个错误,我们需要理解函数调用的实现机制,本文就谈谈它的基本原理 ...
文章目录一、你了解JVM内存结构吗在这之前需要知道JVM内存结构图——JDK1.81.1、程序计数器1.2、虚拟机栈(JVM Stack)1.1.1、java.lang.StackOverflowError问题1.3、本地方法栈1.4、元空间(MetaSpace)1.4.1、...
例如,有时会引发异常:java.lang.StackOverflowError。 一段时间后,该设备将无法接收通知。 然后,我使用JSTACK和JMAP查找发生了什么事情,即DEADLOCK,这导致Java-APNS不再起作用。 我必须重新启动服务才能恢复...