并发Java
- 分类
- Java JVM
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 01:13
答案
思路:描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一 个栈溢出的DEMO. 我的答案: 栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储 局部交量表,操作数栈,动态链接,方法出口等信息.局部交量表又包含基本数据类型,对象引用 类型 如果线程请求的找深度大于虚拟机所允许的最大深度,将抛出STACKOVERFLOWERROR异常,方法递 归调用产生这种结果. 如果LAVA虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是无法申请到足够的内存去完成 扩展,或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈,那么LAVA虚拟机将抛出一 个OUTOFMEMORY 异常.(线程启动过多) HTTPS://BLOG.CSDN.NET/SOY0809 参数-XSS去调整JVM栈的大小
相关题目(5)
怎么查看和分析堆内存?共源 1
Java
CPU 满了怎么排查?共源 1
并发Java
常用的 JVM 排查工具有哪些?共源 1
Java JVM并发Java
JVM 什么时候启动?共源 1
Java JVMJava
什么是并发标记中的三色标记法?共源 1
Java 并发并发Java
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(JVM).md
knowledge_noteQuestion 45: 哪些情况会发生栈溢出?
Source answer: 思路:描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一 个栈溢出的DEMO. 我的答案: 栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储 局部交量表,操作数栈,动态链接,方法出口等信息.局部交量表又包含基本数据类型,对象引用 类型 如果线程请求的找深度大于虚拟机所允许的最大深度,将抛出STACKOVERFLOWERROR异常,方法递 归调用产生这种结果. 如果LAVA虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是无法申请到足够的内存去完成 扩展,或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈,那么LAVA虚拟机将抛出一 个OUTOFMEMORY 异常.(线程启动过多) HTTPS://BLOG.CSDN.NET/SOY0809 参数-XSS去调整JVM栈的大小
Reviewed answer: 当线程请求的栈深度超过虚拟机允许的最大深度时会发生StackOverflowError,常见原因是无限递归或过深的方法调用。若虚拟机栈支持动态扩展但无法申请足够内存,或线程过多导致无法创建新栈,也可能抛出OOM。