1.基本概念:
JVM(Java Virtual Machine,Java虚拟机)是一个用于运行Java程序的虚拟机。它是Java编程语言的核心部分,负责将Java字节码(bytecode)解释或编译成计算机可以执行的机器码,从而实现Java程序的跨平台特性。
2.主要功能:
(1).加载字节码:JVM将编译后的Java字节码文件(.class文件)加载到内存中。
(2).字节码验证:验证字节码的正确性和安全性,以防止恶意代码的执行。
(3).解释执行或即时编译:将字节码转换为机器码。JVM可以通过解释器逐行解释执行字节码,也可以通过即时编译器(JIT,Just-In-Time Compiler)将字节码编译为机器码以提高性能。
(4).内存管理:JVM负责管理程序运行时的内存分配和回收,包括堆(Heap)、栈(Stack)、方法区(Method Area)、本地方法栈(Native Method Stack)和程序计数器(Program Counter)。
(5).垃圾回收:JVM通过垃圾回收机制(Garbage Collection, GC)自动管理和回收不再使用的对象所占用的内存空间。
(6).异常处理:JVM提供了异常处理机制,确保在运行时出现错误时能够安全地终止或继续程序执行。
(7).安全性:JVM实现了Java的沙箱(Sandbox)安全模型,限制了未经授权的代码的操作权限,保护系统不受恶意代码的影响
3.特性:
JVM的最大特点是跨平台性。Java程序首先被编译成与平台无关的字节码(.class文件),然后这些字节码可以在任何安装了JVM的操作系统上运行。JVM为每种操作系统和硬件平台提供了不同的实现版本(如Windows版、Linux版、macOS版等),因此Java程序可以“编写一次,随处运行”。
4.组成部分:
JVM主要由以下几个部分组成:
(1).类加载器子系统(Class Loader Subsystem):负责加载类文件。
(2).运行时数据区(Runtime Data Area):包括堆(Heap)、方法区(Method Area)、Java栈(Java Stack)、程序计数器(PC寄存器)等。
(3).执行引擎(Execution Engine):负责执行字节码,包括解释器和即时编译器(JIT)。
(4).本地方法接口(Native Method Interface, JNI):提供与本地代码(如C/C++)交互的接口。
(5).垃圾收集器(Garbage Collector, GC):负责自动内存管理和回收。
5.总结:
(1).JVM指的是Java虚拟机,本质上是一个运行在计算机上的程序,他的职责是运行Java字节码的文件,作用是为了跨平台的特性。
(2).JVM的功能有三项:
解释执行字节码的指令
管理内存中的对象分配
优化热点代码提升执行效率
(3).JVM组成分为:类加载子系统,运行时数据区,执行引擎,本地接口这四部分。
(4).常用的JVM是Oracle提供的Hotspot虚拟机,也可以选择GraalVM.龙井.oprnJ9等虚拟机。