java 内存 pdf_jvm内存模型高清版.pdf
2019jvm内存模型高清版.pdf.pdf,2019jvm内存模型高清版.pdf.pdf,2019jvm内存模型高清版.pdf.pdf
Java 架构学习群:895244712
JVM 定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM
启动的时候创建,在JVM 退出的时候销毁。而其他的数据依赖于每一个线程,
在线程创建时创建,在线程退出时销毁。
程序计数器
程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号
指示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计
数器来完成。
由于Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来
实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)
只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,
每条线程都需要有一个独立的程序计数器,各条线程之间的计数器互不影响,独
立存储,我们称这类内存区域为“线程私有”的内存。
如果线程正在执行的是一个Java 方法,这个计数器记录的是正在执行的虚拟机
字节码指令的地址;如果正在执行的是Natvie 方法,这个计数器值则为空
(Undefined)。
此内存区域是唯一一个在Java 虚拟机规范中没有规定任何OutOfMemoryError
情况的区域。
Java 架构学习群:895244712
虚拟机栈
线程私有,它的生命周期与线程相同。虚拟机栈描述的是Java 方法执行的内存
模型:每个方法被执行的时候都会同时创建一个栈帧 (Stack Frame)用于存储
局部变量表、操作栈、动态链接、方法出口等信息。
动画是由一帧一帧图片连续切换结果的结果而产生的,其实虚拟机的运行和动画
也类似,每个在虚拟机中运行的程序也是由许多的帧的切换产生的结果,只是这
些帧里面存放的是方法的局部变量,操作数栈,动态链接,方法返回地址和一些
额外的附加信息组成。每一个方法被调用直至执行完成的过程,就对应着一个栈
帧在虚拟机栈中从入栈到出栈的过程。
对于执行引擎来说,活动线程中,只有栈顶的栈帧是有效的,称为当前栈帧,这
个栈帧所关联的方法称为当前方法。执行引擎所运行的所有字节码指令都只针对
当前栈帧进行操作。
局部变量表
局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变
量。在Java 程序被编译成Class 文件时,就在方法的Code 属性的max_locals 数
据项中确定了该方法所需要分配的最大局部变量表的容量。
局部变量表的容量以变量槽 (Slot)为最小单位,32 位虚拟机中一个Slot 可以存
放一个32 位以内的数据类型 (boolean、byte、char、short、int、float、reference
和returnAddress 八种)。
reference 类型虚拟机规范没有明确说明它的长度,但一般来说,虚拟机实现至
少都应当能从此引用中直接或者间接地查找到对象在Java 堆中的起始地址索引
和方法区中的对象类型数据。
returnAddress 类型是为字节码指令jsr、jsr_w 和ret 服务的,它指向了一条字节
码指令的地址。
虚拟机是使用局部变量表完成参数值到参数变量列表的传递过程的,如果是实
例方法 (非static),那么局部变量表的第0 位索引的Slot 默认是用于传递方法
所属对象实例的引用,在方法中通过this 访问。
Java 架构学习群:895244712
Slot 是可以重用的,当Slot 中的变量超出了作用域,那么下一次分配Slot 的时
候,将会覆盖原来的数据。Slot 对对象的引用会影响GC (要是被引用,将不会
被回收)。
系统不会为局部变量赋予初始值 (实例变量和类变量都会被赋予初始值)。也
就是说不存在类变量那样的准备阶段。
操作数栈
和局部变量区一样,操作数栈也是被组织成一个以字长为单位的数组。但是和前
者不同的是,它不是通过索引来访问,而是通过标准的栈操作——压栈和出栈—
来访问的。比如,如果某个指令把一个值压入到操作数栈中,稍后另一个指令就
可以弹出这个值来使用。
虚拟机在操作数栈中存储数据的方式和在局部变量区中是一样的:如int、long、
float、double、reference 和returnType 的存储。对于byte、short 以及char 类型
的值在压入到操作数栈之前,也会被转换为int。
虚拟机把操作数栈作为它的工作区——大多数指令都要从这里弹出数据,执行运
算,然后把结果压回操作数栈。比如,iadd 指令就要从操作数
java 内存 pdf_jvm内存模型高清版.pdf相关推荐
- python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...
下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...
- python入门教程pdf-《python基础教程(第3版)》高清版PDF免费下载
下载地址: 备用地址: Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版PDF免费下载 <py ...
- python神经网络编程pdf百度云下载-Python神经网络编程高清版.pdf
Python神经网络编程高清版.pdf 所属分类:人工智能/神经网络/深度学习 开发工具:Python 文件大小:9787KB 下载次数:2 上传日期:2020-06-26 11:49:20 上 传 ...
- 冈萨雷斯matlab工具箱,MATLAB版冈萨雷斯+中文高清版.pdf
MATLAB版冈萨雷斯+中文高清版:(MATLAB版)数字图像处理冈萨雷斯+中文高清版.pdf.数字图像处理(MATLAB版)冈萨雷斯+中文高清版.包含MATLAB代码实现<数字图像处理(MAT ...
- Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书) - 电子书下载(高清版PDF格式+EPUB格式)...
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书)-董西成著 在线阅读 百度网盘下载(ihhy) 书名:Hadoop技术内幕:深 ...
- 大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书) - 电子书下载 -(百度网盘 高清版PDF格式)...
大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书)-杨传辉 在线阅读 百度网盘下载(89hy) 书名:大规模分布式存储系统:原理解析与架构实战 (大数据技 ...
- 信号与噪声:大数据时代预测的科学与艺术 - 电子书下载(高清版PDF格式+EPUB格式)...
信号与噪声_大数据时代预测的科学与艺术-Nate Silver[美]纳特•西尔弗 在线阅读 百度网盘下载(mglp) 书名:信号与噪声:大数据时代预测的科学与艺术 ...
- 爆发:大数据时代预见未来的新思维 (湛庐文化•财富汇) - 电子书下载 -(百度网盘 高清版PDF格式)...
爆发:大数据时代预见未来的新思维 (湛庐文化•财富汇)-艾伯特-拉斯洛•巴拉巴西 (Albert-László Barabási) 在线阅读 百度网盘下载(9jvg ...
- 基于stm32的linux开发的书籍,跟工程师学嵌入式开发:基于STM32和μC OS-Ⅲ 带目录高清版pdf...
本书选用的STM32芯片基于ARM Cortex-M3体系结构,根据基于MCU的嵌入式技术实际应用需求,合理地选择了多种常用的重要外设接口,如USART.SPI.I2C.FSCM.SDIO总线.以太网 ...
最新文章
- 【80端口占用】win7下80端口被(Pid=4)占用的解决方法
- tomcat:Could not publish to the server. java.lang.IndexOutOfBoundsException
- 文件系统磁盘管理(一)--文件系统
- MySQL之查询性能优化(四)
- 根据一级分类查询所有子级分类
- 跟周报焦虑说拜拜!Excel打通FineBI,到底有多香
- 获取微信的access_tokey,处理json格式的数据
- 30件你不知道可以通过Internet来办到的事
- 数据分析-R语言资料整理
- stm32固件库手册使用方法
- 请简述一下RS485通讯连接方式及其应用?
- 考研英语 - word-list-26
- VMware 8超级详细的安装说明
- C/C++ | 23-12 用指针的方法,将字符串“ABCD1234efgh”前后对调显示
- 数学建模竞赛中的两个技巧
- hdf知道这些就够了
- 4-3. 统计素数并求和(20)
- win7更新_微软最新累积更新导致Win7及以上版本VB6/VBA/VBS运行异常
- vue下载excel表格模板和导入excel表格数据
- 前端培训班哪些比较靠谱呢?