首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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指令查看字节码:
提示
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-19 18:40
科大讯飞_教育BG_后端开发(准入职员工)
报喜不报忧
作为正在春招的大四后端学生,面对父母频繁询问工作,大多只报进展少讲焦虑。目前央国企投递都在正常流程里,笔试面试都有认真准备。不想让家人过度操心,只告诉他们一切顺利稳步前行,自己扛下压力,努力拿到安稳offer,不让他们牵挂。
父母问你工作找得怎么样,...
点赞
评论
收藏
分享
04-20 11:35
门头沟学院 Java
救命!简历在面试当场被戳穿
前几天面试的时候,因为想让实习经历好看点,硬着头皮说了一句大话,结果面试被面试官当场追问,直接翻车,尴尬到想找地缝钻进去!就是那句“熟练使用LangChain搭建AI项目”,其实我就跟着教程做过一个最简单的demo,连核心逻辑都没吃透,纯纯凑数的,写在简历上的时候就贼心虚,就怕被问到。结果真的怕啥来啥啊,昨天面试,面试官看完简历直接问我,“你用LangChain搭项目的时候,怎么解决Tool Calling的冲突问题?” 我瞬间懵了,支支吾吾说不出来,脸一下子就红了。最后只能老实交代,说自己只是初步接触,还没深入研究,面试官也没为难我,但我能感觉到,他看我的眼神都变了,估计这次面试又凉了。真的...
zhy0428:
而且建议是不会的内容写收敛一点,这样被问穿概率低一点
你简历上最心虚的一句话
点赞
评论
收藏
分享
04-20 19:47
东华理工大学 Web前端
还以为真有人这么好心会捞.....
真没招了 原来是卖课的.. 把我的感动还来...
天降大厂offer:
所以个人信息是泄露了
点赞
评论
收藏
分享
04-20 09:21
河海大学 C++
简历问题
为什么暑期实习都约不到面啊,简历有什么问题吗,求告知。
点赞
评论
收藏
分享
今天 08:57
门头沟学院 Java
实习时最怕听到的10句话,听到第一句我就想提桶跑路
刷到这个话题,我DNA都动了。实习半年,我总结出了互联网实习生的死亡语录,每一句都能让我当场心跳加速、头皮发麻、脚趾抠地,听到其中任何一句,我都能条件反射式地想提桶跑路。我赌90%的牛友,至少被其中一句暴击过!【TOP1 万能死亡开场白】“有空吗?”这句话,绝对是实习生噩梦排行榜TOP0,没有之一。在公司里,不管是leader、mentor、产品、测试,谁给你发一句“有空吗?”,你都会瞬间心跳漏半拍,脑子里飞速闪过100种坏结果:是要给我加新活了?是我写的代码出bug了?是我哪里做错了要挨骂了? 最恐怖的是,他只发这三个字,不说是啥事,你回也不是,不回也不是。回“有空”,大概率要接一堆活;回“...
实习时最怕听到的一句话
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
和室友聊完我才知道自己输在信息差...
1.8W
2
...
面到崩溃后,我接受保底offer去旅游了
1.4W
3
...
字节抖音前端暑期二面
7539
4
...
从S到A,从夯到拉,ai项目盘点
5591
5
...
同学去了腾讯、蔚来,而我去了一个小厂,后来我也...
5158
6
...
腾讯云智二面(已挂)
5069
7
...
约不到面的日子
4410
8
...
ai项目要有差异化
4345
9
...
招银网络科技春招
4313
10
...
26届后端java/go求职心得
4271
创作者周榜
更多
正在热议
更多
#
哪些AI项目值得做?
#
15999次浏览
428人参与
#
秋招笔试记录
#
397624次浏览
2193人参与
#
华泰星战营,提前锁定校招offer
#
11646次浏览
353人参与
#
实习时最怕听到的一句话
#
14613次浏览
137人参与
#
90后北漂现状
#
38725次浏览
225人参与
#
找不到大厂实习可以去小厂吗?
#
12781次浏览
112人参与
#
机械人,说说你的烦心事
#
143954次浏览
1150人参与
#
应届生初入职场,求建议
#
332521次浏览
2916人参与
#
简历上如何体现你的“AI”能力?
#
7265次浏览
172人参与
#
你简历上最心虚的一句话
#
14757次浏览
156人参与
#
没有面试的日子里,你在做什么
#
8583次浏览
230人参与
#
携程笔试
#
162387次浏览
903人参与
#
如果有时光机,你最想去到哪个年纪?
#
77097次浏览
858人参与
#
你总挂在第__面?
#
5411次浏览
57人参与
#
ai智能作图
#
682500次浏览
5727人参与
#
汉得笔试
#
3902次浏览
23人参与
#
24届秋招同行攻略分享
#
1478877次浏览
14432人参与
#
你知道最慷慨和最抠的公司分别是
#
7242次浏览
59人参与
#
绿盟笔试
#
3429次浏览
24人参与
#
大厂无回复,继续等待还是奔赴小厂
#
356848次浏览
2024人参与
#
机械人还在等华为开奖吗?
#
333936次浏览
1628人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务