JVM是什么:
Java虚拟机就是一个计算机操作系统之上的虚拟层。它为Java程序提供一个跨平台的运行环境。
JVM的核心功能包括类加载、字节码执行、内存管理以及垃圾回收等。
#####类加载子系统
其任务是将编译后的字节码文件加载到JVM中。类加载器遵循双亲委派模型。即当收到类加载请求的时候,先会交给父类加载器处理,如果父类加载器找不到所需的类,才会由自身来加载,这种机制可以保证每个类在JVM中的唯一性,避免重复加载。
内存管理(运行时数据区)
包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。
方法区:主要用于存储已被装载的类信息、常量、静态变量、即时编译器后的代码等数据。
堆:存放对象实例和数组的地方,也是垃圾回收发生的主要区域。
虚拟机栈:服务于java字节码的执行,即java方法的执行。
本地方法栈:服务于虚拟机使用的native方法。即通过Java Native Interface (JNI) 调用的方法。
程序计数器:记录了每个线程执行的字节码地址。
执行引擎负责解释执行字节码或者将其编译成本地机器码。JVM的解释器逐行解释字节码并转换为机器指令执行。而**即时编译器(Just-In-Time Compiler, JIT)则会把热点代码编译为本地机器码,以提高性能。**通过这种机制,JVM可以在不牺牲太多性能的情况下,实现Java的“一次编写,到处运行”的特性。
垃圾回收机制
JVM中的垃圾回收机制是自动内存管理的核心技术。它通过定期检查堆内存中的对象,自动回收不再使用的对象所占用的内存,防止内存泄漏和溢出。常用的垃圾回收算法包括标记-清除、复制和标记-整理等。这些算法各有利弊,例如标记-清除容易产生内存碎片,而复制算法则需要额外的内存空间。为了提高垃圾回收的效率,JVM通常采取分代回收的方式,将堆内存划分为新生代和老年代,针对不同特性的对象采用不同的回收算法。
欢迎点赞、收藏,以及小小地支持一下。
本人博客地址:朗朗繁星的博客😄