长沙java培训
达内长沙芙蓉路中心

18487146383

热门课程

Java的保存栈区域

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

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

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

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

为关键区域设置保留页面

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

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

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

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

上一篇:新的Java虚拟机特性
下一篇:Java的GNU风格的命令行选项

学java学费多少?合格的Java工程师职场技能通关记

达内java编程入门:java未来的发展走向是什么样的?

【长沙Java培训】程序员如何做到代码零缺陷?

【长沙Java培训】程序员记住,你写的代码是给人看的?

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货