作者 | 康仔
虚拟机是物理机的软件实现。Java是用WORA(编写一次运行到任何地方)的概念开发的,它在VM上运行。编译器将Java文件编译成Java .class文件,然后将.class文件输入JVM, JVM加载并执行类文件。下面是JVM的架构图。
file
如图所示,JVM分为三个主要子系统:
Java的动态类加载功能由类加载器子系统处理。它装载的链接。在运行时而不是编译时首次引用类时初始化类文件。
类将由该组件加载。引导类加载器、扩展类加载器和应用程序类加载器是有助于实现这一目标的三个类加载器。
上述类加载器在加载类文件时将遵循委托层次结构算法。
这是类加载的最后阶段;在这里,所有静态变量都将被赋初始值,并且静态块也会被执行。
运行时数据区被分为五个主要组件:
被分配给运行时数据区的字节码将由执行引擎执行。执行引擎读取字节码并逐个执行。
System.gc()
触发垃圾收集,但不能保证执行。JVM的垃圾收集收集创建的对象。Java本地接口(JNI): JNI将与本地方法库交互,并提供执行引擎所需的本地库。
本机方法库: 这是执行引擎所需的本机库的集合。