浅谈对JVM的认识
-
JVM简介
JVM(Java Virtual Machine),俗称Java虚拟机。是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算功能来实现的,Java语言跨平台就是依赖于JVM实现。
-
内部结构
JVM内部主要由三部分构成:
-
类装载器系统
每一个Java虚拟机都有一个类加载器系统,负责加载程序中类和接口,并赋予唯一名称。
-
运行时数据区
主要包含:
方法区:当JVM的类装载器加载.class文件,并进行解析,把解析的类型信息放入方法区。
堆:虚拟机中只有一个堆,所有的线程都共享它,主要是存放程序运行时创建的对象。
虚拟机栈:存放的为当前线程中局部基本类型的变量、部分的返回结果以及stack frame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址。
本地方法栈:用于支持native方法的执行,存储每个native方法调用的状态。
程序计数器:每一个线程都有它自己的程序计数器,也是该线程启动时创建,存储着下一条被执行指令的地址。 -
执行引擎
负责执行被加载类中包含的指令。主要执行技术有:解释、即时编译、自适应优化、芯片级直接执行;解释属于第一代JVM,即使编译JIT属于第二代JVM,自适应优化(Sun的HotspotJVM采用这种技术)吸收第一代JVM和第二代JVM的经验,采用结合两种的方式。
-