Bootstrap

JVM详解

JVM的功能

  1. 把字节码文件解析成机器码让计算机执行
  2. 自动为对象,方法分配内存
  3. 自动的垃圾回收机制.
  4. 即时编译:把热点字节码缓存成机器码,跳过class文件解析的过程,提高执行效率

 JVM的组成:

  1. classLoad类加载器,将字节码文件加载到内存中.
  2. 运行时数据区
           
    线程共享区:堆和方法区 线程私有区:java虚拟机栈,本地方法栈,程序计数器. 
    
    2.1)程序计数器记录线程执行的位置. 
    2.2)堆内存,存储对象实例和数组 
    2.3)方法区保存类的信息,常量,静态变量.(比如反射的方式获取类的信息就是从方法区取的),jdk1.8之后被元空间取代,区别元空间用的是本地的内存,方法区用的jvm的堆内存.
    2.4)java虚拟机栈:负责方法的调用,当一个方法被调用时候就创建一个新的栈帧压入栈顶.执行完毕就弹栈.
    2.5)本地方法栈:负责执行本地方法的.(比如C编写的一些系统级别的函数获取操作系统信息等)
  3. 执行引擎,负责把字节码指令翻译成机器指令
  4. 本地接口:提供一些本地方法

如下图:

;