java.lang.StackOverflowError

 


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值