java虚拟机介绍
Java虚拟机概念
1.Java虚拟机(JVM)是运行Java程序的抽象计算机,它是一种计算机设备的规范,可以采用不同的方式进行实现。Java程序通过运行在JVM中从而实现跨平台特性。
Sun Classic VM: 世界上第一款商用Java虚拟机。这款虚拟机只能使用纯解释器方式来执行Java代码,如果要使用JIT编译器,就必须进行外挂。如果外挂了JIT编译器,那么虚拟机的执行系统将被JIT全面接管,解释器便不再工作。
Sun HotSpot VM: 是Sun JDK和OpenJDK的默认虚拟机,从JDK1.2开始引入,一直到现在还在使用,可见其优秀程度。
JVM基本架构
1.Class Loader:依据特定的格式,加载class文件到内存。
2.Execution Engine:对命令进行解析。
3.Native Interface:融合不同开发语言的原生库为Java所用。
4.Runtime Data Area:JVM内存空间结构模型(JMM)。
Java内存模型
1. 程序计数器
程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型中,字节码解释器的工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。为了线程切换后能恢复到正确的执行位置,每条线程都有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,所以程序计数器是线程私有的。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址。如果执行的是Native方法,这个计数器值则为Undefined。由于程序计数器只是记录指令的地址,所以该区域不用担心内存泄露的问题。
2. Java虚拟机栈
Java虚拟机栈也是线程私有的,它的生命周期与线程相同。每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用到执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。
1.Java堆
对于大多数应用来说,Java堆是Java虚拟机管理的内存中最大的一块。Java堆在虚拟机启动时被创建,是所有线程所共享的一块内存空间。该区域的主要作用就是用来存放Java对象实例,几乎所有的对象实例都在该区域分配内存。Java堆是垃圾收集器管理的主要区域,有时被称为GC堆。从垃圾回收的角度来说,该区域又可以分为新生代和老年代。
本文地址:https://blog.csdn.net/laowangzaixiang/article/details/107461204
上一篇: C++COM库(tlb文件)调用方法详解
下一篇: GO基础之流程控制语句