课程咨询 :18487146383

  • Java的保存栈区域

    发布:长沙Java培训      来源:达内新闻      时间:2016-11-18

  • 长沙Java培训班的老师Java的保存栈区域。

    假如一个线程运行在栈空间外,它会抛出StackOverflowError错误。在用户代码中,这通常表现应用程序的瘫痪,所以没办法进行干预。但是在库里面,尤其是java核心部分,就算会失败也要尽量保持某些不变量。

    比如ReentrantLock,一个StackOverflowError错误会导致锁状态的错误,会中断锁的状态,使它不能再锁。假如应用程序决定捕获异常,那这个锁会使所有依赖的线程发生死锁。这会很糟糕。

    为关键区域设置保留页面

    JEP 270添加新的注解@ReservedStackAccess。有了它,操作模式会被标记为关键区域,即系统如果处于正常状态,则需要完成运行。JVM的行为由于执行栈而被替代。它保存一些额外栈空间,并且无论何时,一个栈溢出错误发生时,它会在栈的注解方法检查是否有任何@ReservedStackAccess。假如有,会预留一定空闲空间用于执行一些额外工作。它一旦完成,异常就不会再抛出。

    这意味着使用注解不会产生大惊喜,异常还是会抛出,并且线程可能会由于失去了它以同样方式瘫痪。只是当区域代码需要完成,并且要确保在预留空间内完成时,这一操作才有意义。

    在栈里保存多大空间?直到现在,默认是一个单一存储页,“实验表明,这足以覆盖java.util.concurrent的临界区已注明的关键部分”。

    了解详情请登陆长沙达内Java培训官网(cs.Java.tedu.cn)!

上一篇:新的Java虚拟机特性

下一篇:Java的GNU风格的命令行选项

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:5月31日

Java--零基础业余班

Java--零基础业余班

开班日期:5月31日

Java--大数据全日制班

Java--大数据全日制班

开班日期:5月31日

Java--大数据业余制班

Java--大数据业余制班

开班日期:5月31日

  • 网址:http://cs.java.tedu.cn     地址:长沙市开福区芙蓉中路一段 476 号建鸿达现代城 9 楼
  • 课程培训电话:18487146383     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56