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