浅谈 JVM

话不多说,先上图

方法区(元空间)

在jdk1.8之前,叫做永久代,之后改名为元空间(Meta Space)。存放类元信息、静态变量、常量。

虚拟机栈

栈是线程私有的。生命周期随线程生而生,亡而亡。线程每调用执行一个方法,都会压入一个栈帧,方法执行完毕,就弹出栈帧。(当然了,并不能无禁止的一直压入栈帧)

局部变量表

顾名思义,存储方法参数、方法内定义的局部变量

操作数栈

通过相关指令对局部变量进行各种操作

动态链接

将符号引用变成直接引用

方法出口

就是方法执行完了后线程要去哪里执行呢?方法出口就存储了这个位置

程序计数器

也是线程私有的区域,每个线程都会分配计数器的内存,用来存放当前线程正在运行或者将要运行的JVM指令码对应的地址,或者说行号位置

堆是运行时数据区最重要的一块内存区域。也就是常说的存放对象的区域了。
堆由新生代和老年代组成,新生代又分为Eden区和Survivor区,其中Survivor区又分为from区和to区。
new出来的新对象一般都存在Eden区。那为什么要在这个区域呢,Eden就是伊甸园的意思,这么说就很明了了吧。

再来个堆区域组成图

posted @ 2021-08-05 10:44  超级鲨鱼辣椒  阅读(39)  评论(0编辑  收藏  举报