java栈 和 stackoverflow 栈内存溢出

栈存储的内容

局部变量(基本类型的变量(int, short, long, byte, float, double, boolean, char))、对象句柄、操作数栈(栈是线程隔离的,而线程会抢夺资源,所以需要记录操作的位置,以便再次抢到资源时继续执行)

ps:String a = “123”;其中的String a 是存在栈中,而“123”则存储在常量池中,这种为String显示存储,String a = new String(“123”);则不同,是先创建常量“123”,再在堆里创建对象 new String(“123”)

参考 https://blog.csdn.net/laifu007/article/details/93879679

栈的优缺点

pro:存取速度比堆要快,仅次于寄存器。

con:存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

造成原因:

1、是否有递归调用。

2、 数组、List、map数据是否过大

 

递归的深度不要太深,栈的内存一般是1M以内

posted @ 2021-02-22 23:12  karbon  阅读(144)  评论(0)    收藏  举报