- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 虚拟机基本结构
Java 虚拟机基本结构
1. 类加载子系统负责从文件系统或者网络中加载 Class信息, 加载的类信息存放在一块叫方法区的内存空间。 除了类的信息外, 方法区可能还存
放常量池信息。
2. Java 堆在虚拟机启动时候建立,他是 java 程序最主要的内存工作区域,几乎所有的对象实例都保存在这,堆是所有线程共享的。
3. Java 的 NIO 库允许 java 程序直接使用内存,直接内存是 java 堆外的,直接像系统申请内存空间。
4. 垃圾回收系统是 java 虚拟机重要的组成部分,垃圾回收系统主要对方法区, java 堆,直接内存进行回收,其中 java 堆是垃圾回收的主要场合。
5. 每一个 java 虚拟机线程都有一个私有的 java 栈, 一个线程在创建的时候就建立了一个 java 栈,java 栈中保存着帧信息, 局部变量, 方法参数,
和 java 方法的调用返回密切关系。
6. 本地方法栈和 java 栈类似,最大的不同在于 java 栈用于 java 方法的调用,本地方法栈用于本地方法的调用。
7. PC寄存器也是每个线程的私有空间, java 虚拟机会为每个 java 线程创建一个 PC寄存器,在任意时刻,每个 java 线程都在执行一个方法,这
个正在被执行的方法被称为当前 方法,如果当前方法不是本地方法,那么 PC 寄存器会指向当前正在被执行的指令,否则 (本地方法 ), PC 寄
存器值就是 undefined 。
8. 执行引擎是 java 虚拟机最核心组件之一,他主要负责执行虚拟机字节码。
Java 堆
Java 堆是和 java 应用程序关系最为密切的内存空间,几乎所有的 java 对象实例存储在堆中,并且 java 堆完全是自动管理,通过垃圾回收制度,
垃圾对象会被自动清理,不需要显示释放。
根据垃圾回收机制的不同, java 堆有可能会被分为不同的结构,最常见的一种,就是将 java 堆分成新生代和老年代,新生代新对象和存放年龄不
大的对象,老年代存放老年对象,新生代有可能又被分为 eden 区,s0 区,s1 区。 S0,s1 又被称为 from 区和 to 区,它们是两块大小相同的内存空间。
大多数情况下对象首先被分到 eden 区,再一次新生代垃圾回收后,如果对象还活着,则进入 s0 或者 s1 区,之后每经过一次新生代垃圾回收,
存活的对象的年龄加一,到了一定年龄后,则被定义为老年对象,进入老年代。
java 栈
1.出入 java 栈
Java 栈是一块线程私有的内存空间,如果说 java 堆和程序数据密切相关,那么 java 栈就和线程执行密切相关,线程执行的基本就是函数调用,每
次函数调用的数据都是通过 java 栈传递。
Java 栈与数据结构上的栈有着类似的含义,它是一块先进后出的数据结构,只支持出栈和入栈两种操作,在 java 栈中主要保存的是桢栈,每一次
函数调用,就会有一个对应的桢栈压入 java 栈,每一次函数调用结束,就会又一个桢栈被弹出 java 栈,当前所正在运行的函数就是当前桢 ( 位于栈
顶 ),它保存着当前函数的局部变量表,中间运算结果等数据。
2.局部变量表
局部变量表是桢栈重要组成部分,它保存着函数的参数以及局部变量,局部变量表中的变量只在当前函数中有效,当函数调用完成后,随着函数
桢栈销毁
3.操作数栈
操作数栈也是桢栈重要组成部分,他主要保存计算过程中的中间结果,同时作为计算过程中变量的临时保存空间,他也是一个先进后出的数据结
构。
4. 桢栈数据
5.栈上分配
栈上分配是 java 虚拟机提供的一项优化技术,基本思想是,对于线程私有
文档评论(0)