什么是JVM?
- JVM 指的是Java虚拟机,本质上是一个运行在计算机上的程序,他的职 责是运行Java字节码文件,作用是为了支持跨平台特性。
- JVM的功能有三项:第一是解释执行字节码指令;第二是管理内存中对象的 分配,完成自动的垃圾回收;第三是优化热点代码提升执行效率。
- JVM组成分为类加载子系统、运行时数据区、执行引擎、本地接口这四部分 。
4、常用的JVM是Oracle提供的Hotspot虚拟机,也可以选择GraalVM、龙井、 OpenJ9等虚拟机
什么是运行时数据区?
运行时数据区指的是JVM所管理的内存区域,其中分成两大类:
线程共享 – 方法区、堆
方法区:存放每一个加载的类的元信息、运行时常量池、字符串常量池。
堆:存放创建出来的对象。
线程不共享 – 本地方法栈、虚拟机栈、程序计数器
本地方法栈和虚拟机栈都存放了线程中执行方法时需要使用的基础数据。
程序计数器存放了当前线程执行的字节码指令在内存中的地址。
字节码文件的组成
- 基本信息
魔数、字节码文件对应的Java版本号 访问标识(public final等等) 父类和接口
- 常量池
保存了字符串常量、类或接口名、字段名 主要在字节码指令中使用
- 字段
当前类或接口声明的字段信息
- 方法
当前类或接口声明的方法信息 字节码指令
- 属性
类的属性,比如源码的文件名 内部类的列表等