jvm(Java virtual machine) JVM架构解释
2019独角兽企业重金招聘Python工程师标准>>>
JVM 架构解释
每个Java开发者都知道通过JRE【Java运行环境】执行字节码。
但是很多人都不知道JRE是JVM实现的事实。JVM负责执行字节码的分析
代码的解释和运行。
我们应该了解JVM的架构,这对开发者来说是很重要的,这促进我们更有效的
编写代码。在本文中,我们将深入学习有关JVM的架构和JVM组件的区别。
什么是JVM?
虚拟机是物理机的一个软件实现。
JAVA是基于WORA(一次编写,到处运行)的概念开发的,它运行在虚拟机上。
编译器将Java文件编译成class文件,然后将class文件输入到JVM,JVM加载并运行class文件。
下面是JVM架构图:
JVM是如何工作的?
像上面图表显示那样,JVM分成3个主要的子系统:
1、类加载器子系统
Java的动态类加载功能是通过类加载子系统去处理的。
它并不是在编译时候,而是在首次运行时加载引用类时、连接并初始化类文件。
1.1 加载
类通过该组件加载。通过引导类加载器,扩展类加载器,应用类加载器这三个类加载器帮助完成加载。
负责从引导类路径去加载类,除了rt.jar之外,没其他别的jar。给予该加载器最高的优先级。
负责加载ext目录(jre\lib)的类
负责加载类路径中应用级别的类,path提到的环境变量,等等。
以上的类加载器在加载类文件的时候遵循委托层次算法。
1.2连接
1.3 初始化
这是类加载的最后一个阶段,此时所有的静态变量都用原始值去赋值,并且将运行静态代码块。
2、运行时数据区
运行时数据区域分成5个主要的组件:
每个JVM只有一个方法区,它是一个共享资源。
每个JVM只有一个堆区,由于方法区和堆区为多个线程共享内存,所以
存储的数据不是线程安全的。
栈帧被分成3子实体
3、执行引擎
字节码被分配到执行引擎执行的运行时数据区。执行引擎一块一块的读取字节码并执行。
这些本地码将直接被方法调用重复地使用,这就改善了系统的性能。
Java Native Interface (JNI):JNI和本地方法库互动,特供本地库所需的执行引擎。
Native Method Libraries: 这是执行引擎所需的本地方法的一个集合
本文为在下翻译外文的处女作,水平有限,翻译不恰当之处,烦请读者指正!
原文地址:https://dzone.com/articles/jvm-architecture-explained
转载于:https://my.oschina.net/benz001/blog/2990014
总结
以上是生活随笔为你收集整理的jvm(Java virtual machine) JVM架构解释的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Mobx 与 Redux 的性能对比
- 下一篇: Javascript基础之-Promis