负责加载Java核心类库,如java.lang包中的类
加载扩展目录中的类库
加载用户自定义的类
存储类信息、常量、静态变量等,所有线程共享
存储对象实例,垃圾回收的主要区域,所有线程共享
每个线程私有,存储局部变量和方法调用信息
记录当前线程执行的字节码指令地址
为本地方法(native方法)服务
逐行解释执行字节码,启动快但执行慢
将热点代码编译成机器码,提高执行效率
自动回收不再使用的内存对象
允许Java代码调用其他语言(如C/C++)编写的程序
存储本地方法的具体实现代码
简单来说,JVM就像一个翻译官加管家:
1. 类加载器:像图书管理员,负责把需要的Java类"书籍"找出来放到合适的位置
2. 运行时数据区:像一个大仓库,有不同的区域存放不同的东西
• 堆:存放你new出来的所有对象
• 栈:存放方法中的局部变量
• 方法区:存放类的"说明书"
3. 执行引擎:真正的"工人",负责执行你的代码
4. 本地接口:与外界沟通的"翻译官",让Java能调用其他语言的代码
工作流程:你写的Java代码 → 编译成字节码 → JVM加载并执行 → 产生结果