加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Java假造机布局:运行时数据区

发布时间:2018-11-23 06:40:54 所属栏目:站长百科 来源:叶落知秋
导读:Java假造机可以支持多条线程同时执行,每一条Java假造机线程都有本身的pc寄存器。再恣意时候,一条Java假造机线程只会执行一个要领的代码,这个正在被线程执行的要领称为该线程的当前要领。 假如这个要领不是native的,那pc寄存器就生涯Java假造机正在执行

Java假造机可以支持多条线程同时执行,每一条Java假造机线程都有本身的pc寄存器。再恣意时候,一条Java假造机线程只会执行一个要领的代码,这个正在被线程执行的要领称为该线程的当前要领。

假如这个要领不是native的,那pc寄存器就生涯Java假造机正在执行的字节码指令的地点,假如该要领是native的,那pc寄存器的值是undefined。pc寄存器的容量至少该当能生涯一个returnAddress范例的数据可能一个与平台相干的当地指针的值。

Java假造机布局:运行时数据区

Java假造机栈

每一条Java假造机线程都有本身私有的Java假造机栈,这个栈与线程同时建设,用于存储栈帧。Java假造机栈用于存储局部变量与一些尚未算好的功效。其它它在要领挪用和返回中也饰演了很重要的脚色。由于除了栈帧的出栈和入栈之外,Java假造机栈不会再受其他身分的影响,以是栈帧可以在堆平分派,Java假造机栈所行使的内存不必要担保是持续的。

Java假造机实现该当提供应措施员可能最终用户调理假造机栈初始容量的本领,对付可以动态扩展和紧缩Java假造机栈来说,则该当提供调理其最大、最小容量的本领。

Java假造机栈也许产生如下非常环境:

  • 假如线程哀求分派的栈容量高出Java假造机栈应承的最大容量,Java假造机将会抛出一个StackOverflowError非常;
  • 假如Java假造机栈可以动态扩展,而且在实行扩展的时辰无法申请到足够的内存,可能在建设新的线程时没有足够的内存去建设对应的假造机栈,那Java假造机将会抛出一个OutOfMemoryError非常。

Java堆

在Java假造机中,堆是可供各个线程共享的运行时内存地区, 也是供全部类实例和数组工具分派内存的地区。

Java堆在假造机启动的时辰就被建设,它存储了被自动打点体系(也即常说的垃圾网络器)所打点的各类工具,这些受打点的工具无需也无法显式地烧毁。假造机实现者可以按照体系的现实必要来选择自动内存打点技能。Java堆的容量可所以牢靠的,也可以跟着措施执行的需求动态扩展,并在不必要过多空间时自动紧缩。Java堆所行使的内存不必要担保是持续的。

Java假造机实现该当提供应措施员可能最终用户调理Java堆初始容量的本领,对付可以动态扩展和紧缩Java堆来说,则该当提供调理其最大、最小容量的本领。

Java堆也许产生如下非常:

  • 假如现实所需的堆高出了自动内存打点体系能提供的最大容量,那Java假造机将会抛出一个OutOfMemoryError非常。

要领区

在Java假造机中,要领区是可供各个线程共享的运行时内存地区。要领区与传统说话中的编译代码存储区可能操纵体系历程的正文段的浸染很是相似,它存储了每一个类的布局信息,譬喻,运行时常量池、字段和要领数据、结构函数和平凡要领的字节码内容,还包罗一些在类、实例、接口初始化时用到的非凡要领。

要领区在假造机启动的时辰建设,固然要领区是堆的逻辑构成部门,可是简朴的假造机实现可以选择在这个地区不实现垃圾网络与压缩。要领区的容量可所以牢靠的,,也可以跟着措施执行的需求动态扩展,并在不必要过多空间时自动紧缩。要领区在现实内存空间中可所以不持续的。

Java假造机实现该当提供应措施员可能最终用户调理要领区初始容量的本领,对付可以动态扩展和紧缩要领区来说,则该当提供调理其最大、最小容量的本领。

要领区也许产生如下非常环境:

  • 假如要领区的内存空间不能满意内存分派哀求,那么Java假造机将抛出一个OutOfMemoryError非常。

运行时常量池

运行时常量池是class文件中每一个类或接口的常量池表的运行时暗示情势,它包罗了多少种差异的常亮,从编译期可知的数值字面量到必需在运行期理会后才气得到的要领或字段引用。运行时常量池相同于传统说话中的标记表,不外它存储数据的范畴比凡是意义上的标记表要更为普及。

每一个运行时常量池都在Java假造机的要领区平分派,在加载类和接口到假造机后,就建设对应的运行时常量池。

在建设类和接口的运行时常量池时,也许会产生如下非常环境:

  • 当建设类或接口时,假如结构运行时常亮池所必要的内存空间高出了要领区所能提供的最大值,那么Java假造机将会抛出一个OutOfMemoryError非常。

当处所法栈

Java假造机实现也许会行使到传统的栈来支持native要领的执行,这个栈就是当处所法栈。当Java假造机行使其他说话来实现指令集表明器时,也可以行使当处所法栈。假如Java假造机不支持native要领,或是自己不依靠传统栈,那么可以不提供当处所法栈,假如支持当处所法栈,那这个栈一样平常会在线程建设的时辰按线程分派。

Java假造机类型应承当处所法栈实现成牢靠巨细可能按照计较来动态扩展和紧缩。假如回收牢靠巨细的当处所法栈,那么每一个线程的当处所法栈容量可以在建设栈的时辰独立选定。

Java假造机实现该当提供应措施员可能最终用户调理当处所法栈初始容量的本领,对付可以动态扩展和紧缩要领区来说,则该当提供调理其最大、最小容量的本领。

当处所法栈也许产生如下非常环境:

  • 假如线程哀求分派的栈容量高出当处所法栈应承的最大容量,Java假造机将会抛出一个StackOverflowError非常。
  • 假如当处所法栈可以动态扩展,而且在实行扩展的时辰无法申请到足够的内存,可能在建设新的线程时没有足够的内存去建设对应的当处所法栈,那么Java假造机将会抛出一个OutOfMemoryError非常。

【编辑保举】

  1. 口试中关于Java假造机(jvm)的题目看这篇就够了
  2. 一文相识Java假造机的重要构成
  3. Linux情形搭建---手把手教你设置Linux假造机
  4. 批量搜查和修复Windows假造机的要领
  5. 技能进阶:Java假造机(JVM)运行时详解
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读