JVM体系结构和工作方式

一、JVM体系结构

JVM体系结构分为4部分

                  类加载器、执行引擎、内存区、本地方法调用

1. 类加载器:在JVM启动时,负责加载class文件到JVM中

                      类加载器将在分析Classloader中详细介绍

2.执行引擎:负责执行class文件中的字节码,相当于计算机的cpu

                     执行引擎是JVM的核心部分,它负责解析JVM字节码指令并得到执行的结果,Java虚拟机规范中定义了遇到字节码指令时应该处理什么,并且应该得到什么结果,但具体的执行方式并没有定义,而是由JVM厂家自己去实现。每

                     执行引擎就是执行一条条代码的一个流程,也就是执行一个个java方法的流程。实际上,每个java线程就是一个执行引擎的实例

3.内存区: 将内存划分成多个区,模拟实际机器中的存储、记录、调度功能模块

                     在JVM执行过程中需要保存一些信息,如操作码的操作数、执行的返回结果等,还有class类的字节码等信息都要在JVM执行前就准备好。这些数据都是存储在内存区。

                      JVM内存区分为:方法、java堆、java栈、PC寄存器和本地方法区。方法去和java堆是线程共享的。而Java栈和PC寄存器是在每个执行引擎实例(即线程)创建时单独分配的,是线程间不共享的,java栈中保存的是方法的参数、变量、返回值等信息,PC寄存器是指向即将执行的吓一条指令的指针。

4.本地方法调用:调用C、C++实现的本地方法的代码返回结果


二、JVM工作机制

1.JVM为何要基于栈的架构

JVM执行字节码指令是基于栈的架构,所有操作数都要先入栈

理由:1、JVM要设计成与平台无关的,即在有很少或没有寄存器的机器上也能正常执行

           2、为了指令的紧凑性。因为java的字节码有可能在网络上传输,会节省空间


2.执行引擎的架构设计

每当创建一个新线程时,JVM会为这个线程创建一个Java栈和一个PC寄存器,并且寄存器会指向这个线程的第一行可执行代码。

每当访问一个新方法时,会在栈中创建一个新的栈帧数据结构,这个栈帧会保留这个方法的一些元信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: ...
    光剑书架上的书阅读 2,641评论 2 26
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,385评论 11 349
  • 前言 写这篇文章的目的: 总结所学的 JVM 知识 帮助想了解 JVM 的朋友,知无不言,言无不尽 本篇文章将会介...
    SavySoda阅读 5,004评论 11 105
  • 好久没有碎碎念自己的生活 日子过的很平静 虽然还是每天都会想起 至于什么时候抹掉这段记忆不再想起 随缘吧 因为有时...
    文宁宁兒阅读 240评论 0 0
  • Thank you for giving me a happy short time
    辰子锅阅读 106评论 0 0