栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

最后尝试块可以防止StackOverflowError

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最后尝试块可以防止StackOverflowError

它不会永远运行。每次堆栈溢出都会导致代码移至finally块。问题在于这将需要非常,非常长的时间。时间顺序为O(2 ^ N),其中N是最大堆栈深度。

想象最大深度为5

foo() calls    foo() calls       foo() callsfoo() calls   foo() which fails to call foo()finally calls   foo() which fails to call foo()       finallyfoo() calls   foo() which fails to call foo()finally calls   foo() which fails to call foo()    finally calls       foo() callsfoo() calls   foo() which fails to call foo()finally calls   foo() which fails to call foo()       finallyfoo() calls   foo() which fails to call foo()finally calls   foo() which fails to call foo()finally calls    foo() calls       foo() callsfoo() calls   foo() which fails to call foo()finally calls   foo() which fails to call foo()       finallyfoo() calls   foo() which fails to call foo()finally calls   foo() which fails to call foo()    finally calls       foo() callsfoo() calls   foo() which fails to call foo()finally calls   foo() which fails to call foo()       finallyfoo() calls   foo() which fails to call foo()finally calls   foo() which fails to call foo()

要使每个级别进入finally块都需要两倍的时间,而堆栈深度可能是10,000或更大。如果您每秒可以进行10,000,000次呼叫,那么这将花费10 ^
3003秒,甚至比宇宙的时间还要长。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号