JVM系列-JVM整体架构图

1、大框架:

jvm架构图

2、基本加载流程:

jvm加载流程

  • 首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀);
  • 然后由JVM中的类加载器加载各个类的字节码文件;
  • 加载完毕之后,交由JVM执行引擎执行;
  • 在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存,在Java中我们常常说到的内存管理就是针对这段内存空间进行管理(如何分配和回收内存空间)。

3、执行引擎:

  • 分配给运行时数据区的字节码将由执行引擎执行。执行引擎读取字节码并逐段执行。
3.1、解释器:
  • 解释器能快速的解释字节码,但执行却很慢。 解释器的缺点就是,当一个方法被调用多次,每次都需要重新解释。
  • 把程序源代码一行一行的读懂然后执行,发生在运行时,产物是「运行结果」。
3.2、JIT编译器:
  • 把整个程序源代码翻译成另外一种代码,然后等待被执行,发生在运行之前,产物是「另一份代码」。
  • JIT编译器消除了解释器的缺点。执行引擎利用解释器转换字节码,但如果是重复的代码则使用JIT编译器将全部字节码编译成本机代码。本机代码将直接用于重复的方法调用,这提高了系统的性能。
    • 中间代码生成器 – 生成中间代码
    • 代码优化器 – 负责优化上面生成的中间代码
    • 目标代码生成器 – 负责生成机器代码或本机代码
    • 探测器(Profiler) – 一个特殊的组件,负责寻找被多次调用的方法。
3.3、垃圾回收器:
  • 收集并删除未引用的对象。可以通过调用"System.gc()"来触发垃圾回收,但并不保证会确实进行垃圾回收。
  • JVM的垃圾回收只收集那些由new关键字创建的对象。所以,如果不是用new创建的对象,你可以使用finalize函数来执行清理。
3.4、Java本地接口 (JNI):
  • JNI 会与本地方法库进行交互并提供执行引擎所需的本地库。
3.5、本地方法库:
  • 它是一个执行引擎所需的本地库的集合。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值