首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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指令查看字节码:
提示
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 01:05
Université d’Auvergne-Clermont-Ferrand 1 C++
c++ / cpp 掌握什么技能才能找好工作
首先这个同学这样提问,说明是对c++ / cpp的就业方向有了一定的思考。知道c++ / cpp 不同的方向技术栈天差地别。但是又想让自己的简历具有很高的适配性,即能投很多岗位。可投递岗位越多意味着拿高薪好offer的概率越大。首先大家是校招生应届生(如果社招,针对目前工作方向深挖就可以了),重点是基础。基础会了,达到找工作的要求了,如果你还有特别想找某个方向的想法,再针对这个方向的具体要求,学学就好了。说到基础,其实这也是大家常说的四大件,尤其应届生,这也是重点考察的东西。cpp一般就是搞软件相关开发,不需具备硬件知识,哪怕搞嵌入式软件开发(这其实就是在Linux上编程,生成动态库或者可执行...
点赞
评论
收藏
分享
06-10 18:30
门头沟学院 嵌入式软件工程师
面试被压工资怎么办?
在求职面试中,很多人都会遇到一个尴尬的场景:谈得很顺利,但一谈到薪资,对方就开始压价,远低于你的心理预期。这种情况很常见,但并不意味着你就必须接受。那么,面试时被压工资,应该怎么做呢?一、先别急着拒绝,弄清楚对方的意图HR压工资并不一定是因为你能力不够,很多时候只是出于预算控制、公司制度、或者习惯性的试探。这个时候要做的第一步是:稳住情绪,别立刻否定或同意,而是继续沟通。可以这样回应:“我理解公司的预算安排,不过我提出的薪资是根据我过去的经验、能力以及市场行情综合考虑的,希望可以再沟通看看是否有折中的空间。”二、清晰表达你的价值和依据如果你希望坚持自己的薪资标准,就要让对方知道你不是随口报的数...
满分简历要如何准备?
嵌入式笔面经分享
点赞
评论
收藏
分享
04-16 18:40
北华大学 嵌入式软件开发
佬们这简历能找到实习吗?
我就是0offer糕手:
北大不乱杀
点赞
评论
收藏
分享
04-30 21:35
已编辑
长安大学 C++
美团小sp。。可惜了😪😪————更新——————别说我了兄弟们😭😭。女朋友是体制内高校教师,工作动不了。并且对我真的是非常非常好。在一块也是他出钱居多。并且双方也都见过父母,准备订婚了😭😭😭😭
晓沐咕咕咕:
评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞
评论
收藏
分享
06-09 15:43
华为_产品经理(准入职员工)
毕业后二次创业,上班前的洗牌梭哈
许久无更,忙于毕业,感叹毕业,陷于生活,享受生活。最近谈成了一笔生意,获利不少。是我呕心沥血从0做起为时三年的平台。在签❀后,愈发摆烂,已经是不想在像当初那个少年一样疯狂冲了。话说,酒暖思淫欲。也是懒起来了,客户也懒得维护,资源也懒得挖掘,做做分销得了,拿着微薄的分成,混混稀饭钱。但是除我本身积累的硬资源以外,兼有三年以来的经验与渠道。无任何同伴的我,似乎有一种,后继无人的悲凉。作为一名道德底线极高的某🏊学子,不允许我最后卷钱跑路,我有心转让业务。被多方势力请吃饭,最后谈成,已经转出了全盘业务。毕业旅途提上日程?在想去哪玩,说实话,本人一个小工作狂。自24年来,实习、专利、项目、兼职、面试...
牛客激励计划
毕业旅行去哪玩儿
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
春招失败准备转行了
2.1W
2
...
这些假国企都给我避雷!
1.2W
华为开奖进度👉
热聊中
3
...
代码拜拜!被烟草录取了✌
1.1W
4
...
宝宝你是最棒的宝宝
7195
5
...
27届腾讯一面,强度太大了..
7155
6
...
所以毕业就是分手季吗?
6247
7
...
Golang面试项目怎么找?
6098
8
...
一文详解各大厂人才项目差异点(吐血整理)
5812
9
...
论双非大一的“暑期”能拿下大厂offer吗?
5022
10
...
在西二旗上班真的没有一点活人感
4823
创作者周榜
更多
正在热议
更多
#
考研对你找工作产生了哪些影响?
#
2248次浏览
34人参与
#
机械只有读研才有出路吗?
#
19662次浏览
228人参与
#
聊聊这家公司值得去吗
#
236139次浏览
2197人参与
#
远程面试的尴尬瞬间
#
100699次浏览
827人参与
#
你认为哪个岗位找工作最卷
#
15148次浏览
55人参与
#
kpi面有什么特征
#
34312次浏览
246人参与
#
工作中哪个瞬间让你想离职
#
24080次浏览
166人参与
#
职场人,说说你的烦心事
#
8806次浏览
81人参与
#
职场上哪些事情令人讨厌
#
16794次浏览
86人参与
#
为了找工作你投递了多少公司?
#
10896次浏览
149人参与
#
你有哪些缓解焦虑的方法?
#
2367次浏览
112人参与
#
你今年的平均薪资是多少?
#
126592次浏览
661人参与
#
秋招最大的收获是什么?
#
34050次浏览
300人参与
#
运营/市场营销人的秋招现状
#
17143次浏览
189人参与
#
硬件人绝对不能踩的坑
#
61131次浏览
734人参与
#
大家每天通勤多久?
#
42062次浏览
331人参与
#
实习生应该准时下班吗
#
223375次浏览
1397人参与
#
如果可以,你希望哪个公司来捞你
#
88194次浏览
371人参与
#
运营人求职交流聚集地
#
135262次浏览
983人参与
#
入职第一天,你准备什么时候下班
#
56626次浏览
357人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务