专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 堆栈溢出的原因

堆栈溢出的原因

更新时间:2022-11-23 07:35:39 来源:赢咖4 浏览392次

堆栈溢出的原因有哪些?赢咖4小编来告诉大家。

堆栈溢出的原因

堆溢出

当创建对象时,没有足够的可用空间,则会发生堆溢出。

堆内存空间不足,一种是真的不够,还有一种是发生了死循环,对象一直在创建。

GC发生之后,释放的空间太小,不够存储对象。

永久代(元空间)内存不足,永久代一般是存储静态变量,代理类和jvm加载的class数据都在这里存储。

栈溢出

主要原因一般是虚拟机栈无法申请到足够的空间。因为在栈的运行过程中,JVM维持着一条线性的方法调用轨迹,这个轨迹越长,就代表着栈的深度增加。

在发生递归调用的时候最容易出现溢出的情况

线程请求的栈深度,大于虚拟机允许的栈最大深度。一般是线性递归太深造成的,或者是线程栈太小。

剩余空间不足以创建新的线程,要么是线程数量太多,要么是stack(栈区)空间太小。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>