java栈内存溢出怎么产生

 我来答
潇洒霸王aa
推荐于2018-04-17 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:95万
展开全部
1.如果线程请求分配的栈容量超过java虚拟机栈允许的最大容量的时候,java虚拟机将抛出一个StackOverFlowError异常。
2.如果java虚拟机栈可以动态拓展,并且扩展的动作已经尝试过,但是目前无法申请到足够的内存去完成拓展,或者在建立新线程的时候没有足够的内存去创建对应的虚拟机栈,那java虚拟机将会抛出一个OutOfMemoryError异常。

刚看到题主在问题下的评论,xss分配的应该是每个线程的栈大小,线程数量和整个进程的大小是由操作系统来限制的。
对于单个线程,栈内存容量减小,或者变量表深度增大,就会造成StackOverFlow,这点我跟题主想的一样。
至于是堆内存溢出还是方法区内存溢出还是栈内存溢出,其实可以用一些工具比如
JConsole来监视。
laobaitu0322
2015-09-15 · TA获得超过744个赞
知道小有建树答主
回答量:900
采纳率:33%
帮助的人:644万
展开全部
很多原因
数组申明太大,递归太深等等都有可能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式