目录

3.JVM-内部结构

3.JVM-内部结构

1.栈结构

1.1 动态链接

栈中的对象指向堆中的实际引用

符号引用: 比如一个类的名称

直接引用: 具体堆中数据信息

https://i-blog.csdnimg.cn/img_convert/37eb86dde2f428c9ea0a2982d7ca7e91.png

1.2 方法返回

栈中上一层的结果和下一层的指令

https://i-blog.csdnimg.cn/img_convert/8925752a75c73555db7981e112e6cf9d.png

https://i-blog.csdnimg.cn/img_convert/303bf301aa2fc68b9bc6948c04db66ed.png

1.3 操作数栈

https://i-blog.csdnimg.cn/img_convert/b26d52be2a767b5b4c23de4d4e7742d4.png

1.4 局部变量

该线程中需要的变量

https://i-blog.csdnimg.cn/img_convert/ee69e58f2ce5836381c89b8b370b565f.png

2. 虚拟机栈是如何工作

程序计数器:存当前执行到那一步

操作数栈里面将计算完之后的结果推入局部变量表

编译好的字节码文件,程序计数器表示当前执行到第几补,先将数据存入虚拟机栈,计算后,将结果存入局部变量表

https://i-blog.csdnimg.cn/img_convert/a7a982ec199343b03f77bb8ff9d02a0d.png

3. 本地方法

底层实现的方法,C++写的方法,好多方法是基于操作系统实现的.

https://i-blog.csdnimg.cn/img_convert/a1f1a700acb7cfcb17414dcf5a7026bf.png

https://i-blog.csdnimg.cn/img_convert/7709a2b24e99d1be71e174855a06ad8b.png

线程启动方法.Thread.run();

默认先将线程初始化成 “INITIALIZED” 状态,

死循环等待父线程给他改变状态,然后执行

https://i-blog.csdnimg.cn/img_convert/318700c37f2f6dcea411140b154d388d.png

4. 直接内存

直接内存是系统中内存的区域,执行速度非常快

https://i-blog.csdnimg.cn/img_convert/37fc6edee621ca1e1fcb03381131f0d0.png

5. 方法区

5.1 方法区的内部结构

简单一行HelloWorld,加载几百上千个方法,因为他也会执行比如扩展类加载器.系统类加载器等,所有的类都是放到方法区中.

https://i-blog.csdnimg.cn/img_convert/ff40ab816e5bae43a57c684294afc298.png

PermGen space :永久代(JDK7)之前的空间

Metaspace:元空间(直接使用的本地内存

https://i-blog.csdnimg.cn/img_convert/f38488dac2f7e1d90cd36f9328a6a3a8.png

5.2 为什么使用本地内存

https://i-blog.csdnimg.cn/img_convert/cf2f5cf7b1bd7af64e793b4c84b79afa.png

5.3 方法区的内部结构

https://i-blog.csdnimg.cn/img_convert/27a383baa39705558e2abf6475ce8ff1.png

5.3.1 类型信息

https://i-blog.csdnimg.cn/img_convert/6d1c05601360c226513043d6a073411c.png

5.3.2 域信息

https://i-blog.csdnimg.cn/img_convert/3ba18a70b49fc8115e1d7f29f01a4141.png

下面是域信息,其中static的值存在方法区中,在类加载 (加载->链接->初始化)链接的准备阶段赋值,如果是正常的就在初始化时赋值.

https://i-blog.csdnimg.cn/img_convert/1e6eb105af232c7f04d673c24bd6a2b7.png

https://i-blog.csdnimg.cn/img_convert/a5a686f81f5b44e61e47954baa1d4806.png

5.3.3方法

https://i-blog.csdnimg.cn/img_convert/d061396a86e97d2f59e68aefe77f2715.png

5.3.4 常量池

https://i-blog.csdnimg.cn/img_convert/d022ab6a2df01caacfe9761ece0823de.png