JVM的内存结构

1:类加载器

主要负责从文件系统中加载class信息,加载的信息存放在一块被称为方法区的地方。

2:方法区

就是存放类信息,常量信息,常量池信息。包括字符串字面量,和数字常量信息。

3:java堆

虚拟机启动时创建的JAVA堆,他是java程序最要的工作内存区域,几乎所有对象的创建实例都在堆中,堆空间是线程共享的。

4:直接内存

java的NIO库允许java程序使用直接内存,从而提高性能,通常直接内存的运行速度会快于java堆,一般在读写频繁的时候使用。

5:java栈

每个虚拟机都有一个私有的栈,一个线程的java栈在线程创建时被创建的,java栈中保存着局部变量,方法参数,同时java方法的调用,返回值等。

6:本地方法栈

和java栈非常类似,最大的不同是本地方法栈是由本地方法调用,java虚拟机允许java直接调用本地方法。

7:GC,垃圾回收器

垃圾回收系统是java的核心,是必不可少的,java有一套自己进行垃圾处理的机制,开发人员无需收工去处理。

8:pc寄存器

是每个线程私有的空间,java虚拟机会为每个线程创建pc寄存器,在任意时刻,一个java线程总是在执行一个方法。这个方法被称为当前方法。如果当前方法不是本地方法,PC寄存器就会执行当前正在被执行的指令,如果是本地方法,则PC寄存器值就为UNDEFINED,寄存器存放如当前执行环境指针,程序计数器,操作栈指针等。

9:执行引擎

虚拟机最核心的部分,就是执行引擎,它主要负责执行虚拟机的字节码。一般先执行编译成机器码后执行。

原文链接:https://blog.csdn.net/LQzhang_11/article/details/81603818

原文地址:https://www.cnblogs.com/linhongwenBlog/p/14561314.html