【JVM笔记】运行时数据区(内存结构)

以下为JDK1.8版本虚拟机运行时数据区的相关总结(OneNote截图)。

文章目录结构:

线程共享区域

     1 方法区

            1.1 运行时常量池(Runtime Constant Pool)

            1.2 元空间实现方法区

     2.堆(Heap) 

            2.1 新生代(Young Generation)

            2.2 老年代(Old Generation) 

            2.3 元空间(Meta Space) 

            2.4 字符串常量池(String Pool)

线程不共享区域

     3.虚拟机栈(Stack) 

            3.1 局部变量表

            3.2 操作数栈(Operand Stack)

            3.3 动态链接和指向运行时常量池的引用

            3.4 方法返回地址

    4.本地方法栈(Native Method Stack) 

    5.程序计数器(Program Counter Register) 

更正:

上文对新生代中进行GC的过程描述有歧义,重新更正一下 。

对象在From SurvivorTo Survivor来回转移的详细过程

对象在Eden区创建,当Eden区第一次装满之后,会执行第一次Yong GC,第一次Yong GC会将伊甸区还存活的对象复制到Surviver区的“From”区,此时“To”区是空的。但是在以后伊甸区被装满后进行的Yong GC,会将Eden区还存活的对象直接移动到Surviver区的“To”区,而“Form”区的对象有两个去处,“From”区的对象会根据经过的GC次数计算年龄,如果年龄到达了阈值(默认15),则会被移动到老年代中,否则就转移到“To”区,此时“From”区变成了空的,然后“From”区和“To”区进行角色互换,也就是新的“To”就是上次GC前的“From”,新的“From”就是上次GC前的“To”。到下一次进行GC时,还是有一块空的“To”区,用来存放从eden区和“From”区移动过来的对象。也就是不管怎样,都会保证名为To的Survivor区域是空的。Yong GC会一直重复这样的过程,直到“To”区被填满,“To”区被填满之后,会将所有对象移动到年老代中。 

全部评论

相关推荐

暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务