前言

好久不见!都2024年5月了,一开年就忙,其实回想也不算很忙,就找了很多事把自己困住,闲的时候太跳脱,脑子飞速运转想一堆乱七八糟的事,头痛的厉害,所以忙起来好点。今日主题——JVM。

正文

基本概念

JVM【Java Virtual Machine】可运行Java代码的“假想”计算机,为什么用上假想这个词?因为它是虚构的,是通过在实际计算机上,仿真模拟各种计算机功能来实现,另称Java虚拟机。

引入JVM的原因?“一次编译,到处运行”有没有听过,个人想大概跟Java语言特点“与平台的无关、跨平台”就是指Java在不同平台运行时不需要重新编译。JVM是运行在操作系统上的,它与硬件没有直接交互。字节码指令集、寄存器、栈、堆、垃圾回收、存储方法域,好吧!听起来还挺多东西的。

#yyds干货盘点#Java面试题-JVM_JVM

运行过程

1.Java源文件->编译器->字节码文件

2.字节码文件->JVM->机器码

简单来说,就是Java源文件通过编译器,生成相应的.class文件(字节码文件)而字节码文件又通过Java虚拟机中的解释器,编译成特定机器上的机器码。

#yyds干货盘点#Java面试题-JVM_字节码_02

当一个程序开始运行,这时虚拟机就开始实例化,多个程序启动会存在多个虚拟机实例,程序退出或关闭,虚拟机实例就会消亡,多个虚拟机实例之前的数据不共享。