共计 1013 个字符,预计需要花费 3 分钟才能阅读完成。
什么是JVM?
JVM全称"Java Virtual Machine",即Java虚拟机,是一种能够执行字节码的虚拟机,以堆栈结构机器来实现。
早期是Java平台的一部分,能够执行以Java语言实现的软件程序,是Java跨平台的基石。
如今,JVM已经成为跨语言的平台,任何一个语言(Kotlin,Scala,Jython等)只要能够将源码编译成符合JVM规范的字节码文件,均可以通过JVM运行,实现跨平台。
JVM与虚拟机的区别?
虚拟机
- 虚拟机指的是在软件层面上模拟计算机行为的程序或软件组件。虚拟机可以模拟硬件层面的计算机(VM),也可以为特定语言或平台设计的虚拟执行环境(JVM)。
- 虚拟机并不局限于JVM,其它编程语言也可以有自己的虚拟机。
JVM
- JVM一般指Java平台的虚拟机实现,用于执行Java字节码。
- JVM是Java程序运行的核心组件,负责将Java字节码翻译成机器码并执行,同时管理内存、线程、异常等。
JVM的组织架构
HotSpot VM是目前市面上高性能虚拟机的代表作之一,它采用解释器与即时编译器并存的架构,
器运行性能已经达到了可以和C/C++程序一较高下的地步。
HotSpot VM的架构如下:
详细架构图如下:
Java虚拟机主要分为五大模块:类装载器子系统、运行时数据区、执行引擎、本地接口方法和垃本地方法库。
后续所有章节将按照这一顺序依次讲解。
JVM的生命周期
JVM启动
JVM虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的,也就是说,不同系统平台的JVM其初始类的实现可能不同。
JVM运行
运行中的JVM有一个清晰的任务,就是执行Java程序。程序开始执行时它才运行,程序结束时,他就停止。执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java 虚拟机的进程。
JVM退出
JVM的退出有以下几种情况:
- 程序正常执行并结束;
- 程序在执行过程中出现异常或错误而异常终止;
- 由于操作系统出现错误而导致Java虚拟机进程终止;
- 线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次的exit或halt操作。
其它虚拟机
除HotSpot VM外,还有IBM的J9、Microsoft JVM、Taobao JVM、Jrockit VM等。