三、JVM系列(Java虚拟机内存结构)

2021-05-06  本文已影响0人  大虾啊啊啊

前言

在之前我们知道,Java源文件通过JavaC编译器编译成了字节码文件(.class文件),接下来我们就要让Java虚拟机运行字节码文件,从而得到我们最终想要的结果。在这个过程,Java虚拟机会载入字节码文件,将其存入Java虚拟机的内存空间中。
那么字节码数据在Java虚拟机中是如何存放的呢?Java虚拟机在为类实例、成员变量分配内存是如何分配的呢?带着这些问题,我们先来了解一下Java虚拟机的内存结构。

Java虚拟机内存结构(Java虚拟机规范中也称之为运行时数据区)

Java虚拟机内存结构可以分为线程公有和线程私有的两部分:

1、公有部分:Java堆、方法区、常量池

2、私有部分:PC寄存器、Java 虚拟机栈、本地方法栈

以上我们知道Java堆和方法区方法区是线程公有的内存部分。而Java虚拟机内存中也有一部分是线程私有的。他们包括了:PC寄存器、Java虚拟机栈、本地方法栈。

小结

学到这里我们就知道一个Java文件经过JavaC编译器编译成了字节码文件,然后字节码载入Java虚拟机内存。我们的类的信息就会存在方法区中。如果创建对象,那么我们的对象就会存在Java堆中。如果调用方法,就会用到PC寄存器、Java虚拟机栈、本地方法栈。面对如此多的Java类,Jvm是如何决定这些类的加载顺序呢?又是如何控制他们的加载呢?下一节我们讲讲JVM的类加载机制。

上一篇 下一篇

猜你喜欢

热点阅读