一.
1.类加载子系统:负责从文件系统或者从文件中加载Class信息,加载的信息存放的一块称为方法区的内存空间。
2.方法区:就是存放类信息,常量信息,常量池信息,包括字符串常量和数字常量等.
3.Java堆:在Java虚拟机启动的时候建立Java堆,它是Java程序最主要的工作区域,几乎所有的对象实例都存放在java堆中,堆空间是所有线程共享的.
4.直接内存:Java的NIO允许Java程序使用直接内存,从而提高性能,通常直接内存速度优于Java堆。读写频繁的时候会考虑使用.
5.每个虚拟机线程都有一个私有的 栈,一个线程的Java栈在线程创建的时候被创建,java栈中保留着局部变量,方法参数,同时Java的方法调用,返回值等.
6.本地方法栈和java栈非常类似,最大不同为本地方法栈为本地方法调用。Java虚拟机允许Java直接调用本地方法(C编写)
7.垃圾回收系统是Java的核心,也是必不可少的,java有一套自己垃圾清理的机制,开发人员无需手工处理。
8.PC寄存器(Program Counter)是每个线程私有的空间,Java虚拟机会为每个线程创建PC寄存器,在任意时刻,一个Java线程总是在执行一个方法,这个方法被称为当前方法,如果当前方法不是本地方法,PC寄存器就会执行当前正在被执行的指令,如果是本地方法,则PC寄存器值为Undefined,寄存器存放当前执行环境指针,程序计数器,操作栈指针,计算中的变量指针等信息.
9.执行引擎最核心的组件就是执行引擎,它负责执行虚拟机的字节码。
二.堆栈及方法区之间关系