要想了解虚拟机,就需要对虚拟机有整体的认识,下图是纯手工打造.转载请注明出处.
虚拟机主要是由类加载系统,运行时数据区域(虚拟机管理的内存区域),字节码执行引擎,本地方法接口等组成.见图.
我们来逐一介绍虚拟机体系结构中的部分.
1.类加载系统:类加载系统负责将字节码文件加载到虚拟机管理的内存区域(虚拟机不关心字节码文件的来源).这里涉及到类加载机制,请参见类加载机制相关帖.
2.运行时数据区域:此区域是虚拟机进行内存管理和垃圾回收的主要区域.请参见虚拟机运行时数据区域总结及垃圾回收帖.
3.字节码执行引擎:字节码执行引擎是虚拟机最核心的组成部分之一,它会将字节码进行解析并输出执行结果.
4.本地方法接口(Java Native Interface,简称JNI)
"A native method is a Java method whose implementation is provided by non-java code."
什么是本地方法?所谓本地方法,就是在java代码中被native修饰的方法,可以看看String类中的intern()方法,它就是一个本地方法.
为什么这里叫本地方法接口?我们可以看到在String类中的intern()方法,并没有具体的实现过程,真正的实现过程是由C/C++或其他底层汇编语言实现的.
这么做的好处是什么?
有些与平台相关的内容,通过底层语言可以很好的交互,例如内存操作.
5.本地方法类库:用来支持本地方法的实现.