首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
upjmbai5800
2019-08-11 10:08
已编辑
中国银联_技术开发中心_应用开发
关注
已关注
取消关注
JVM总结(2)
JVM总结(2)java内存区域、字节码执行引擎
1、内存区域
程序计数器:知道线程执行位置,保证线程切换后能恢复到正确的执行位置。
虚拟机栈:存栈帧。栈帧里存局部变量表、操作栈、动态连接、方法返回地址。局部变量表又存了各种基本数据类型和对象引用(句柄)。
本地方法栈:为Native方法服务
堆:存放对象实例和数组,可以处于物理上不连续的内存空间
方法区:存类信息、常量、静态变量。有运行时常量池,存放类的符号引用
堆主要用来存放对象,栈主要用来执行程序。
2、对象的创建
虚拟机遇到一条new指令时,会先去常量池检测能否找到new对应的类的符号引用,并检测这个类是否加载、初始化。
如果加载检查通过,则分配内存。分配内存有两种方式:⑴指针碰撞,针对连续内存区域;⑵空闲列表,针对不连续内存区域。
内存分配完之后,会对内存初始化零值,保证实例字段能在java代码不赋初值也能使用。
接下来对对象信息进行设置,把类的元数据信息、对象的哈希码、对象的GC分代年龄等信息存放在对象头之中。
最后执行用户的Init方法
3、对象的内存布局
分为三部分,对象头、实例数据、对齐填充
对象头:⑴对象自身运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁等。⑵类型指针,虚拟机通过这个来确定这个对象是哪个类的实例。⑶如果对象是一个Java数组,那么对象头中还必须有一块用于记录数组长度的数据。
实例数据:对象真正存储的有效信息,也是在程序代码中定义的各种类型的字段内容。
对齐填充:JVM要求对象的起始地址必须是8字节的整数倍,因此当对象实例数据没有对齐时,这部分来补全。
对象的访问定位
取决于虚拟机的实现而定,有“句柄”和“直接指针”两种方式
“句柄”的好处是,在对象被移动(垃圾回收时很普遍),只用修改句柄中的实例数据指针,而reference本身不用修改。
“直接指针”的好处是,速度更快,毕竟节省了一次指针定位的时间开销。由于对象的访问在Java中非常频繁,因此这部分开销节省下来也很可观。
JVM字节码执行引擎
字节码文件即类文件被加载后,就能送入执行引擎了:
输入:字节码文件
处理:字节码解析
输出:执行结果。
物理机的执行引擎是由硬件实现的,虚拟机的执行引擎由于自己实现的。
• 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。
• 每个栈帧都包括了一下几部分:局部变量表、操作数栈、动态连接、方法的返回地址 和一些额外的附加信息。
• 每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。
• 一个栈帧需要分配多少内存,不会受到程序运行期变量数据的影响,而仅仅取决于具体的虚拟机实现。在活动线程中,只有位于栈顶的栈帧才是有效的,称为当前栈帧,与这个栈帧相关联的方法称为当前方法,执行引擎运行的所有字节码指令都只针对当前栈帧进行操作。
局部变量表:
一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。以变量槽slot为单位,一个slot可以放32位数据类型,对于long\double占用2个slot。
操作数栈:
即用来存放操作数的栈结构,当一个方法刚开始执行的时候,这个方法的操作数栈是空的,在方法的执行过程中,会有各种字节码指令向操作数栈中写入和提取内容,也就是入栈和出栈的操作。
java虚拟机的解释执行引擎称为基于栈的执行引擎,其中所指的栈就是操作数栈。
动态连接:
运行期将相关的符号引用转换为直接引用
方法返回地址:
方法执行完成的结果值
方法调用:
解析方法的符号引用和确定方法的版本
方法的执行:
解释执行(通过解释器执行)
编译执行(通过JIT编译器产生本地代码执行)
基于栈的代码执行示例
下面我们用简单的案例来解释一下JVM代码执行的过程,代码实例如下:
使用javap指令查看字节码:
提示
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
今天 20:30
美团_java开发工程师(准入职员工)
歌尔股份内推,歌尔股份内推码
一面主管面全程没超过30分钟,主要问题如下:1.自我介绍2.GPA/排名/校内职务/四六级3.让我英文自我介绍,但我没准备,一时语塞4.自认为学的最好的一门课(会追问具体内容)5.实习项目方案从发现到落地的整个过程概述6.一些常规、简单的专业知识(大概问了5、6个点)7.简历中涉及到的量化数字来源8.沟通能力询问(举例说明)9.对base的看法10.家庭情况等歌尔股份26届歌尔之翼校园招聘全球启动【关于歌尔】歌尔2008年在深交所上市,是全球布局的科技创新型企业,主要从事声光电精密零组件及精密结构件、智能整机、高端装备的研发、制造和销售。连续多年获得中国电子元器件企业百强研发实力榜第一名。【正...
点赞
评论
收藏
分享
01-06 19:33
门头沟学院 Java
面试 Java 基础八股文十问十答 第一期
面试 Java 基础八股文十问十答 第一期 作者:程序员小白条,个人博客 从今天开始,将会更新我自己收集和总结的八股文。有需要面试的小伙伴可以收藏一下这个系列,一定会有所帮助! ⭐点赞⭐收藏⭐不迷路!⭐ 1.JDK和JRE有什么区别? 答: 首先要了解中文名称 JDK(Java Development Kit) Java开发工具包 JRE (Java Runtime Environment) Java运行环境 JVM (Java virtual machine) Java虚拟机 JDK = JRE +Java开发工具(比如你用的Javac.exe 编译源码 转化成字节码) JRE =...
查看10道真题和解析
点赞
评论
收藏
分享
2025-11-21 13:40
门头沟学院 前端工程师
最后悔的一集
真是肠子都悔青了!以为有保底就手贱把经纬给拒了,结果没几天保底offer直接鸽了我。现在秋招都快结束了,工作还没着落,人直接裂开。
obbob:
你再不网暴这家公司我们可就要网暴你了
你秋招最后悔的选择
点赞
评论
收藏
分享
2025-11-27 22:29
已编辑
门头沟学院 Java
百度裁员,掐头去尾,裁应届?
网上铺天盖地传起来🐻厂要开始裁员了,而且只裁新人和老人,好家伙你是不想培养新人了是吧,老人薪资高,降本增效,掐头去尾,就si操半新不旧的人,绝了,我以前10.19号参加笔试后到现在还没通知,好家伙怪不得没通知,要开始“财源”广进计划了是吧还刷到很多应届生被裁的。度子业务确实不咋的,老是起个大早,结果最后搞得不咋的,之前的文心一言就是,早早上线,结果现在搞得不咋的
程序员花海:
今年去百度的校招真的该慎重
牛客解忧铺
点赞
评论
收藏
分享
今天 14:15
元戎启行_软件工程师(准入职员工)
元戎启行内推,元戎启行内推码
元戎启行26届秋招二面经(70分钟),摘自优秀牛油(1)项目介绍以及问题(2)RTOS系统的核心运行方式,相关信号量,互斥量等问题(3)RTOS系统任务是如何调度的,优先级问题(4)中断概念,如何中断,RTOS中的硬中断如何工作,软中断如何工作(5)RTOS系统运行中硬中断发生时,RTOS系统会如何处理(6)RTOS系统中的存在两个软中断时,系统会怎么处理(7)RTOS系统运行的环境是如何?一般在什么样的处理器运行(8)IIC的运行方式?IIC从机地址是如何配置的?主机地址是如何配置的?(9)运行过程中,如果新的IIC设备接入,主机和从机如何交换地址?(10)UART的协议,一共多少根总线,每...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
还有谁能比我更省,还有谁!
8579
2
...
因为我躺平了,所以你们都得躺平
4679
3
...
牛客的争议之外,关于竞争、分享与情绪的一个旁观视角
4151
4
...
加入交流群之后遇到的各种抽象人物
4020
5
...
袁世凯窃取革命果实,是不是因为“做题家”?
3342
6
...
前端面筋---字节hr面和莉莉丝一面(附带简历版)
2958
7
...
《我和牛客的那些年》
2573
8
...
我们还是低估了AI的发展速度
2474
9
...
MiniMax前端日常实习二面
2141
10
...
一定要知道自己想要的
2059
创作者周榜
更多
正在热议
更多
#
实习的你做了哪些离谱的工作
#
3268次浏览
53人参与
#
工作压力大,你会干什么?
#
2885次浏览
80人参与
#
MiniMax求职进展汇总
#
1359次浏览
25人参与
#
参加哪些竞赛对找工作有帮助?
#
3141次浏览
66人参与
#
找实习记录
#
6767次浏览
139人参与
#
我的付费上班经历
#
5164次浏览
97人参与
#
邪修省钱套路
#
2234次浏览
86人参与
#
AI让你的思考变深了还是变浅了?
#
933次浏览
34人参与
#
如果不上班,你会去做什么
#
2090次浏览
77人参与
#
为了入行xx岗,我学了__
#
1780次浏览
33人参与
#
简历第一个项目做什么
#
1794次浏览
43人参与
#
你找工作的时候用AI吗?
#
167414次浏览
868人参与
#
如何排解工作中的焦虑
#
257553次浏览
2376人参与
#
毕业论文进行时
#
24802次浏览
146人参与
#
大厂面试初体验
#
86577次浏览
398人参与
#
你们的毕业论文什么进度了
#
1235898次浏览
9924人参与
#
毕业旅行去哪玩儿
#
21849次浏览
148人参与
#
你觉得面试是靠实力还是靠运气
#
27491次浏览
312人参与
#
硬件人秋招进展
#
265503次浏览
3971人参与
#
记录实习开销
#
175458次浏览
670人参与
#
职场新人体验
#
160675次浏览
1148人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务