关于jvm:初识JVM的组成结构

6次阅读

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

在初识 jdk 配置的时候,肯定有听到过 jre,jdk 和 jvm 这么三个名词,它们别离是什么呢,其实简略来说:

jre、jdk、jvm 之间的关系

  • JDK 是 Java 程序员罕用的开发包、目标就是用来编译和调试 Java 程序的。
  • JRE 是指 Java 运行环境,也就是咱们的写好的程序必须在 JRE 才可能运行。
  • JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,是指负责将字节码解释成为特定的机器码进行运行,值得注意的是在运行过程中,Java 源程序须要通过编译器编译为.class 文件,否则 JVM 不意识。

JVM 组成构造

类加载子系统

负责从文件系统或是从网络中加载 class 信息,加载的信息寄存在一个称之为办法区的内存空间

办法区

用于寄存类的信息、常量信息、常量池信息、包含字符串字面量和数字常量。咱们罕用的反射就是从这个办法区里读取的类信息。

Java 堆

堆空间是 jvm 启动的时候创立进去的一块内存区域,简直所有的对象实例都放在这个空间里。
这个区域被划分为年老代和老年代的,咱们常常接触的 GC 垃圾回收机制,就是次要回收堆空间的垃圾数据。
堆空间里的数据,是被所有线程所共享的,所以会存在线程平安问题,所以那些锁就是为了解决堆空间数线程平安问题而生的。

间接内存

间接内存并不是虚拟机运行时数据区的一部分,也不是虚拟机标准中定义的内存区域,但这部分也是被频繁的读写应用,也可能会导致 OutOfMemoryError 异样的呈现。

Java 的 NIO中的 allocateDirect 办法是能够间接应用间接内存的,能显著的进步读写的速度。

Java 栈

一堆一栈,所有线程共享堆空间里的数据,然而栈空间是每个线程独有的,相互间接不能拜访。
栈空间是线程创立的时候所创立出的一份内存空间,栈里次要保留一些局部变量、办法参数、Java 办法调用,返回值等信息。

本地办法栈

本地办法栈和 Java 栈不同之处在于,能够间接调用 Java 本地办法,即 JDK 中用 native 润饰的办法。

垃圾收集零碎

GC 垃圾回收,是一个十分重要的知识点,保障咱们程序可能有足够的内存空间运行,回收掉内存中曾经有效的数据,其实能够了解成咱们日常生活中的垃圾回收。
回收算法个别有 标记革除 算法,复制 算法,标记整顿 算法等。

PC 寄存器

它是每个线程公有的空间,JVM 会为每个线程创立独自的 PC 寄存器,在任意时刻,一个 Java 线程总是在执行一个办法,这个办法被称为以后办法,如果以后办法不是本地办法,PC 寄存器会执行以后正在被执行的指令,如果是本地办法,则 PC 寄存器值为 undefined,寄存器寄存如以后环境指针、程序计数器、操作栈指针、计算的变量指针等信息。

执行引擎

是 jvm 十分外围的组件,它负责执行 jvm 的字节码,个别先会编译成机器码后执行。
本篇文章带着大家宏观地意识了一下 JVM 组成构造

正文完
 0