JVM整体结构

JVM简介

JVM(Java Virtual Machine)即Java虚拟机,是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成,JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回器,以及可靠的即时编译器。

Java中存在一个特性:跨平台性,这就是因为JVM的原因,我们只需要写一份代码,将代码放到JVM上面运行即可,这是因为JVM运行在操作系统之上,它与硬件没有直接的交互,而不同操作系统是有不一样的JVM的,JVM将我们写的代码和操作系统隔离开了。

说明:JVM整体结构主要讲的是HotSpot VM

JVM主要组成部分

JVM的整体结构包含了 类加载器系统、运行时数据区、执行引擎、本地方法接口等组件,其中 运行时数据区 又包含了方法区、堆、虚拟机栈(Java栈)、本地方法栈、程序计数器等,具体的用处会在后面说明

JVM的执行过程

编写完 Java文件之后,会通过Java编译器将Java文件编译成 class文件,编译成class文件之后,这时候可以通过类加载器将class文件加载到内存中,同时会在方法区生成一个 Class 对象实例,然后会对这个class文件进行检查、赋初值、初始化等过程,最终由执行引擎进行代码的执行

JVM生命周期

虚拟机的启动

Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。

虚拟机的执行

  • 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。

  • 程序开始执行时他才运行,程序结束时他就停止。

  • 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程

虚拟机的退出

有如下的几种情况:

  • 程序正常执行结束

  • 程序在执行过程中遇到了异常或错误而异常终止

  • 由于操作系统用现错误而导致Java虚拟机进程终止

  • 某线程调用Runtime类或system类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。

  • 除此之外,JNI(Java Native Interface)规范描述了用JNI Invocation API来加载或卸载 Java虚拟机时,Java虚拟机的退出情况

题外话:怎么查看class文件内容

看class文件,其实是一个一种二进制的类文件 ,它的内容是JVM指令,但是我们一般在IDEA中查看class文件的时候,他会将二进制文件自动转化为我们可以看懂的Java代码

其实我们可以借助 Javap 命令来查看生成的二进制文件,在class文件的目录中,直接使用 

javap -c xxxx.class

就可以出现相应的字节码文件

结束语

本章只是对于JVM的一个简介,后面会写 类加载器、运行时数据区、垃圾回收等JVM相关的内容

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值