JVM

运行时数据区由四部分组成

1、
Eden区
  对象首先放在Eden区,如果Eden区满载之后,jvm(字节码执行引擎)会单独开启一个垃圾收集线程,执行minor gc垃圾收集(将非垃圾对象复制到空的Survivor区,并清空Eden区和另一个Survivor区)。
  经过15次gc操作还没有被销毁时,会被jvm移动到老年代里。
  当老年区满载之后,可能程序就要挂掉了.....

  GC ROOTs根节点:
    线程栈的本地变量,静态变量,本地方法栈的变量等。
  垃圾回收机制(可达性分析算法):
    将“GC ROOTs”对象作为起点,从这些节点开始向下搜索引用的对象(搜索不限于Eden区),找到的对象都标记为非垃圾对象,其余的对象都标记为垃圾对象(如果一个对象经过一次GC处理没有被销毁掉,那么它的分代年龄会加一)。
2、栈(线程):
  通过指针指向堆内存中对象的位置来调用相关对象。
3、本地方法栈
4、程序计数器:
  标记程序运行位置
5、方法区(元空间):
  常量+静态变量+类

其中:
  1、每一个线程都有自己单独的:栈,本地方法栈,程序计数器。
  2、堆,方法区所有线程共享。

图片说明
  栈帧(stack frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。

栈帧内存空间(每一个方法对应一个自己的栈帧空间)
  1、局部变量表:
    用于储存局部变量
  2、操作数栈:
    一个指令将操作数压入栈,另一个指令将操作数弹出栈进行相关操作,最后将结果压入栈,相关指令将相关结果弹出栈,最后将结果储存到相应位置。
  3、动态链接:

  4、方法出口:
    储存下一步方法执行位置。

javap:javap是jdk自带的反解析工具,使用javap 操作指令反解析字节码,生成更加可读的相关信息。

全部评论

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹 是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹 待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹 能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥 内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
友友们,我实在是不太明白,校招的话现在大多也是提前实习,然后转正也是需要考核的,考核通过才能转正,那这跟实习转正有什么区别啊
苦闷的仰泳鲈鱼刷了1...:提前实习,是让你提前熟悉业务的,后续是入职后可以减少试用期的(大部分是包入职的);转正实习,要是hc不够或者其他原因,让你正式offer可能都没有,这个风险很大。 ---个人看法和了解到的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务