首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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指令查看字节码:
提示
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 11:37
门头沟学院 Java
面经分享集合
我在牛客上面经大多数匿名发布,大家可以关注下我的新公众号:程序员落叶,定期更新从大二到大四的面经,包含实习、秋招、春招,方向:Java、前端、全栈、客户端、测试、测试开发等等。程序员落叶 主要分享编程相关资讯、前沿科技 AI 应用方向日志、个人面经、怎么去自己一个人去设计到做完整个项目,比较基础向,适合新手或者想看乐子资讯的人~欢迎关注~后续更新上班日常
点赞
评论
收藏
分享
05-25 15:57
腾讯_腾讯云_测试开发(实习员工)
测试开发暑期实习的准备心得
前言:结合我自己的测开准备流程,和面试这几场实习后的经验,写一篇文章给想转测试开发岗位的同学一点入坑的指南吧。因为本人非科班出身,是临时转岗,面试的次数也不多,可能很多地方说的不全面不太对,有差错的地方,请各位大佬在评论区指正,大家一起讨论进步。从面试流程来看,我个人觉得测开主要准备的内容可以分为以下几个方面:项目、八股文、测开场景专题、力扣算法一、项目项目这个不用多说,作为研发岗,你的简历上的项目肯定要体现你自身的技术栈和专业性。但是这里可能有些同学会有疑问:1、项目多少个好?是不是我写的越多越好?找实习阶段,项目两三个足够。一个项目应该写上以下几个内容:项目名称、项目时间、你在这个项目负责...
牛客在线求职答疑中心
简历中的项目经历要怎么写
点赞
评论
收藏
分享
05-06 12:56
广西民族大学 Java
学Java的又有福了
💰薪资待遇
Ncsbbss:
又想干活又想要工资,怎么什么好事都让你占了
点赞
评论
收藏
分享
04-27 10:54
门头沟学院 Java
原来师兄师姐都这么厉害
果然是我水平菜拉低了学院,陷入了深深的自卑了。
MMMJC:
一眼华工
你怎么评价今年的春招?
牛客创作赏金赛
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
05-29 22:21
社招Offer选择:小马智行、追觅科技
Offer1:小马智行,深圳,测试开发工程师,17.0k*16.0,Offer2:追觅科技,深圳,嵌入式工程师,18.0k*15.0,
嵌软狗都不学:
各位base深圳的同事,作为也是并肩作战的一员,今天想站在管理视角,和大家开诚布公地聊一聊:从近几个月的上下班数据对比看来,我们发现一个明显的差异:深圳同事的在岗时间普遍比苏州同事短。很多深圳同事早上9点之后才到公司,晚上不到 20 点就下班了;而总部那边,20点半甚至 22 点后还有不少同事在办公室忙碌,特别是研发团队,加班更是常态。相信去过苏州的同事,对这种场景都不陌生。我很好奇,这是因为苏州工作任务太重还是咱们深圳同事效率真的高到能在更短时间内完成工作?MOVA在深圳成立分公司是为了吸引更优秀的人才贡献更多更高质的价值,公司管理层给我反馈的是深圳招到的多是行业的专家大拿,大部分都是薪资比苏州高的,而且我们办公的租金等也远高于苏州的..MOVA虽脱胎于强壮的集团母体不久,各业务板块尚未实现全面盈利,虽说公司管理层目光长远,不纠结当下的人才投入,但行业内的普遍标准是,员工创造的价值要达到公司雇佣成本的 15 倍以上。大家不妨自我审视一下,自己是否达到了这个标准?如果是抱着划水、按时打卡走人拿毛爷爷的心态那不适合来MOVA,那样过下去不但自己过得尴尬也会影响MOVA这个大船的攻城略地的速度.我并非鼓励大家盲目加班,而是倡导高效工作,拒绝无效忙碌,不要让项目进度因低效受影响,也别把精力浪费在和苏州同事拼打卡时长上,提倡更高的人效比;考虑到两地地域和交通差异,相信大家会找最适合自己发挥的工作方式(比如按时下班后1小时到家晚饭后继续未竟工作等..)大家在遵守公司规章的情况下尽情地体现自己的能力价值,为MOV!和深圳公司争光我们在这边才能更安心更有信心的工作下去;请客BU长、名部门长、项目管理和各业务单元负责人,全面梳理团队情况,及时评估成员工作负荷与成果质量,坚决清退划水害虫痕疫,践行公司价值观,相互监督,防止管理漏洞及渎职。感谢人家的理解,也请人家多担待我的直言不讳……
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
上午拍毕业照,下午拍结婚照!牛友祝福我们吧!
8270
2
...
本科四年,我决定在即将毕业时转行
5624
字节暑期补捞
热聊中
3
...
以为走散了,命运却又把我们安排到一起
5389
4
...
28届学院本女生走java中~
4696
5
...
亲爱的公司,你好!
4686
6
...
没有人关心你在学校有多牛逼
2579
7
...
记录第二次面试 京控信息
2120
8
...
滴滴春招
2114
9
...
26届选手终于在五月底拿到offer啦!!!
2107
10
...
0实习
2037
创作者周榜
更多
正在热议
更多
#
写给毕业5年后的自己
#
4491次浏览
98人参与
#
国央企笔面经互助
#
129792次浏览
1080人参与
#
华泰证券Fintech星战营
#
168969次浏览
193人参与
#
职场捅娄子大赛
#
322161次浏览
3281人参与
#
制造业的秋招小结
#
87697次浏览
1602人参与
#
华为求职进展汇总
#
4648699次浏览
28254人参与
#
好好告别我的学生时代
#
46700次浏览
885人参与
#
毕业季等于分手季吗
#
16469次浏览
204人参与
#
晒一下我的毕业照
#
34178次浏览
385人参与
#
海信求职进展汇总
#
65219次浏览
359人参与
#
如何缓解求职过程中的焦虑?
#
7935次浏览
103人参与
#
记录实习开销
#
29504次浏览
205人参与
#
如果今天是你的last day,你会怎么度过?
#
22858次浏览
199人参与
#
当下环境,你会继续卷互联网,还是看其他行业机会
#
108460次浏览
783人参与
#
毕业租房也有小确幸
#
109955次浏览
4324人参与
#
HR问:你期望的薪资是多少?如何回答
#
40219次浏览
525人参与
#
上班苦还是上学苦呢?
#
223085次浏览
1331人参与
#
我的省钱小妙招
#
16257次浏览
326人参与
#
工作两年想退休了
#
120095次浏览
1120人参与
#
牛客租房专区
#
69948次浏览
974人参与
#
晒晒我司的端午福利
#
14925次浏览
99人参与
牛客网
牛客企业服务