深入了解java虚拟机之 初识JVM

java技术由java编程语言、java类文件、java虚拟机、java API四个部分组成。
在这里插入图片描述
JVM的三种解释:
1.对JVM规范的的比较抽象的说明;
  2.对JVM的具体实现;
  3.在程序运行期间所生成的一个JVM实例。
JVM的作用:
Java虚拟机(JVM) 处在核心的位置,是程序与底层操作系统和硬件无关的关键。它的下方是移植接口,移植接口由两部分组成:适配器和Java操作系统, 其中依赖于平台的部分称为适配器;JVM 通过移植接口在具体的平台和操作系统上实现;在JVM 的上方是Java的基本类库和扩展类库以及它们的API, 利用Java API编写的应用程序(application) 和小程序(Java applet) 可以在任何Java平台上运行而无需考虑底层平台, 就是因为有Java虚拟机(JVM)实现了程序与操作系统的分离,从而实现了Java 的平台无关性

JVM体系结构
每个JVM都有两种机制,一个是装载具有合适名称的类(类或是接口),叫做类装载子系统;另外的一个负责执行包含在已装载的类或接口中的指令,叫做运行引擎。每个JVM又包括方法区、堆、 Java栈、程序计数器和本地方法栈这五个部分,这几个部分和类装载机制与运行引擎机制一起组成的体系结构图。

在这里插入图片描述
ClassLoader将符合文件结构的类文件加载入内存;至于能否运行,是由Execution Engine决定的。
执行引擎:执行引擎也叫做解释器(Interpreter),负责解释命令,提交操作系统执行。
在java虚拟机规范中,执行引擎的行为是由指令集所决定的,java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0或者多个操作数,用于提供操作所需的参数和数据。
执行引擎所依赖的指令系统只是一个do while循环操作,十分简单,所以JVM的执行过程非常简单,执行效率高。

JVM的每个实例都有一个它自己的方法域和一个堆,运行于JVM内的所有的线程都共享这些区域;
当虚拟机装载类文件的时候,它解析其中的二进制数据所包含的类信息,并把它们放到方法域中;
当程序运行的时候,JVM把程序初始化的所有对象置于上。
每个线程创建的时候,都会拥有自己的程序计数器和 Java栈,其中程序计数器中的值指向下一条即将被执行的指令,线程的Java栈则存储为该线程调用Java方法的状态;
本地方法调用的状态被存储在本地方法栈,该方法栈依赖于具体的实现。

我们通过一个具体的HelloWorld类的加载过程来看一下JVM的运行过程。
虚拟机通过调用HelloWorld类的方法main启动,传递给main一个字符串数组参数,使指定的类被装载(使用classLoader装载类,将该类的class文件/字节码文件、二进制表加载到内存中执行),类被装载后同时在main方法被调用之前,必须对类 HelloApp与其它类型进行链接然后初始化,一个类在初始化之前它的父类必须被初始化。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值