java虚拟机的基本结构

本文主要介绍了JVM(Java Virtual Machine)的基本组成


类加载子系统和方法区

类加载子系统负责从文件系统或者网络中加载.class字节码文件,并装入内存,使JVM可以实例化或者以其他方式使用加载后的类。 加载类的信息存放于一块被称为方法区的内存空间,除了类信息之外,方法区还有可能存放运行时的常量信息,包括字符串常量和数字常量(这部分常量信息是Class文件中常量池的部分的内存映射)。

java堆

在虚拟机启动的时候建立,它是java程序最主要的内存工作区域。几乎所有的java对象实例都存放于java堆中,堆空间是所有线程共享的,这是一块与java应用密切相关的内存区间。

直接内存

java的NIO库允许java程序使用直接内存,直接内存是java堆外的,是程序直接向系统申请的内存,通常直接内存申请速度慢,运行速度快,读写频繁场合适合使用,直接内存是在堆之外的。

不会受限于Xmx的大少,但是和堆的总和依然受限于操作系统能给出的最大内存。

垃圾回收

垃圾回收是java虚拟机的重要组成部分,垃圾回收可以对方法区,java堆和直接内存进行回收。

java栈

每一个java虚拟机线程都有个私有的java栈。一个线程的java栈在线程创建的时候被创建。java栈中保存着帧信息,局部变量,方法参数同时和java方法的调用、返回密切相关。

本地方法栈

和java栈非常相似,最大的不同在于java栈用于java方法的调用,而本地栈则用于本地方法的调用(通常用C编写)。

PC寄存器

PC(program Counter)寄存器也是每一个线程私有的空间,java虚拟机会为每一个java线程创建PC寄存器。

执行引擎

java虚拟机的最核心组件之一,它负责执行虚拟机的字节码。现代虚拟机为了提高效率,会使用即时编译即时将方法编译成机器码之后再执行。

结尾。。。

猜你喜欢

转载自blog.csdn.net/lingmao555/article/details/80296061