JVM简介

发布时间 2023-06-23 09:30:10作者: Davis·Hisa

网址:Java Virtual Machine Architecture in Java (javainterviewpoint.com)

1.JVM的主要组成部分

  • 类加载器、运行时数据区、执行引擎、本地库接口

2.执行流程

  1. 类加载器(ClassLoader)把Java代码转换为字节码
  2. 运行时数据区(Runtime Data Area)把字节码加载到内存中,而字节码文件只是JVM的一套指令集规范,并不能直接交给底层 系统去执行,而是由执行引擎运行
  3. 执行引擎(Execution Engine)将字节码翻译为底层系统指令,再交由CPU执行去执行,此时需要调用其他语言的本地库接口 (Native Method Library)来实现整个程序的功能

3.JVM运行时数据区

  • 堆、方法区、栈、本地方法栈、程序计数器
  • 堆解决的是对象实例存储的问题,垃圾回收器管理的主要区域。
  • 方法区可以认为是堆的一部分,用于存储已被虚拟机加载的信息,常量、静 态变量、即时编译器编译后的代码。
  • 栈解决的是程序运行的问题,栈里面存的是栈帧,栈帧里面存的是局部变量 表、操作数栈、动态链接、方法出口等信息。
  • 本地方法栈与栈功能相同,本地方法栈执行的是本地方法,一个Java调用非 Java代码的接口。
  • 程序计数器(PC寄存器)程序计数器中存放的是当前线程所执行的字节码的 行数。JVM工作时就是通过改变这个计数器的值来选取下一个需要执行的字节码 指令。