1:JVM 总体组成java
--》@1.类加载器(ClassLoader)spa
@2.运行时数据区(Runtime Data Area)操作系统
@3.执行引擎(Exection Engine)线程
@4.本地库接口(Native Interface)翻译
2:各个组成部分的用途接口
--》程序在执行以前先要把java代码转换成字节码(class文件),JVM首先须要把字节码经过必定的方式 类加载器(ClassLoader) 把文件加载到内存中 运行时数据区 (Runtime Data Area),而字节码文件时JVM的一套指令集规范,并不能直接交给底层操做系统去执行,所以须要特定的命令解析器 执行引擎 (Execution Engine)将字节码翻译成底层系统指令再交由CPU去执行,而这个过程须要调用其它的语言接口 本地库接口(Native Interface)来实现整个程序的功能,内存
3:运行数据区组成虚拟机
--》咱们一般所说的JVM组成指的是运行数据区io
运行数据区又有5部分组成:class
1:程序计数器 2:java虚拟机栈 3:本地方法栈 4:Java堆 5:方法区
程序计数器和Java虚拟机栈是内存私有
Java堆是虚拟机中内存最大的一块 被全部线程共享 (内存共享)
方法区不等于永生代(内存共享)
4:扩展 运行时常量池 直接内存