关于jvm:Java虚拟机的基本结构

8次阅读

共计 1118 个字符,预计需要花费 3 分钟才能阅读完成。

Java 虚拟机根本构造

类加载子系统

类加载子系统负责从文件系统或网络中加载 Class 信息, 加载的类的数据结构寄存于一块叫办法区的内存空间中。对于类加载子系统相干请查看:JVM 虚拟机的类加载机制

办法区

办法区次要存储类加载后的数据结构信息、运行时常量池信息、字符串、数字常量(这部分常量信息是 Class 文件中常量池局部的内存映射)。

Java 堆

Java 堆在虚拟机启动的时候建设,它是 Java 程序最次要的内存工作区域。简直所有的 Java 对象实例都寄存于 Java 堆中。堆空间是所有线程共享的,这是一块与 Java 利用密切相关的内存区域。

间接内存

Java 的 NIO 库容许 Java 程序应用间接内存。间接内存是在 Java 堆外的、间接向零碎申请的内存区域。通常拜访间接内存的速度会优于 Java 堆。因而,出于性能思考,读写频繁的场合可能会思考应用间接内存。因为间接内存在 Java 堆外,因而,它的大小不会间接受限于 Xmx 指定的最大堆大小,然而零碎内存是无限的,Java 堆和间接内存的总和仍然受限于操作系统的最大内存。

垃圾回收零碎

垃圾回收零碎是 Java 虚拟机的重要组成部分,垃圾回收器能够对办法区、Java 堆和间接内存进行回收。其中,Java 堆是垃圾收集器的工作重点。和 C /C++ 不同,Java 中所有的对象空间开释都是隐式的。也就是说,Java 中没有蕾丝 free() 或者 delete() 这样的函数开释指定的内存区域。对于不再应用的垃圾对象,垃圾回收零碎会在后盾默默工作,默默查找、标识并开释垃圾对象,实现包含 Java 堆、办法区和间接内存中的全自动化治理

Java 栈

每一个 Java 虚拟机线程都有一个公有的 Java 栈。一个线程的 Java 栈在线程创立的时候被创立。Java 栈中保留着帧信息,Java 战中保留着局部变量、办法参数,同时和 Java 办法调用、返回密切相关。

本地办法栈

本地办法栈和 Java 栈十分相似,最大的不同在于 Java 栈用于办法的调用,而本地办法栈则用于本地办法的调用。作为对 Java 虚拟机的重要扩大,Java 虚拟机容许 Java 间接调用本地办法(通常应用 C 语言编写)。

PC(Program Counter) 寄存器

PC 寄存器也是每个线程公有的空间,Java 虚构机会为每一个 Java 线程创立 PC 寄存器。在任意时刻,一个 Java 线程总是在执行一个办法,这个正在被执行的办法称作以后办法。如果以后办法不是本地办法,PC 寄存器就会指向以后正在被执行的指令。如果以后办法是本地办法,那么 PC 寄存器的值就是 undefinded。

执行引擎

执行引擎是 Java 虚拟机的最外围组件之一,它负责执行虚拟机的字节码。古代虚拟机为了进步执行效率,会应用即时编译技术将办法编译成机器码后在执行。

正文完
 0