JVM是一个虚构出来的计算机,通过在实际计算机上仿真模拟各种计算机的功能实现的。
与平台无关,关键就是JVM
由四部分组成:
1. Class Loader:类加载器
.java文件>javac编译>.class文件>classloader>加载到内存中执行
ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。
- classloader具备层次关系
- 不同的类加载器分别创建同一个类的字节码数据属于完全不同的对象,没有任何关联。
当一个程序运行时,JVM启动,运行bootstrap classloader(启动类加载器),用来加载核心API(满足最基本需求)。其中包括:ExtClassLoader(加载Java扩展API,/lib/ext下的)和AppClassLoader(加载CLASSPATH目录下的class)
2. Execution Engine:执行引擎,又叫解释器
负责解释命令,提交操作系统执行。
3. Naive Interface本地接口
作用:融合不同的语言为java所用。
4. Runtime data area运行数据区
是整个JVM的重点,所有程序都被加载到这里运行。整个JVM框架由加载器加载文件,执行器在内存中处理数据,交互时通过本地接口。