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以内

浙公网安备 33010602011771号