首页 > 编程知识 正文

java方法调用栈,JAVA异常处理

时间:2023-05-05 21:47:26 阅读:25458 作者:1070

“深入了解Java虚拟机”提出堆栈的两个异常:

1 .如果线程请求的堆栈深度大于虚拟机允许的深度,则抛出堆栈溢出错误异常;

2、虚拟机堆栈可以动态扩展(目前大多数Java虚拟机都可以动态扩展,但Java虚拟机规范还允许固定长度的虚拟机堆栈) )如果在扩展时无法申请足够的内存,out of memmema

刚开始没能理解,后来自己思考了一下,说了自己的理解:

实际上,上面的两个异常表明,将虚拟机分配给堆栈的空间有限,将系统分配给虚拟机的空间有限。

例如,如果机器有4G内存,就不能全部给虚拟机。 全部给虚拟机的话,打不出饱嗝哦。 即使虚拟机管理的内存中有2G,虚拟机也不能全部传递给堆栈。 全部交给堆栈是怎么玩的?

现在,上面的第二个例外是虚拟机堆栈可以动态扩展,固定长度的虚拟机堆栈是指堆栈大小。 假设我设置了堆栈大小500M(JVM参数:-Xss )。 ) 500米也想得像个屁。 同时支持动态扩展。 就算给你玩虚拟机管理的所有2G,也是不够的。 所以OOM。

第一个异常是栈的深度其实是栈的大小,如果栈无限大,即深而无限深(明显以为在放屁)。 既然堆栈大小有上限,方法调用就会变多(方法调用是将堆栈帧推入内部吧),调用使用会不会很异常?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。