JVM基础知识入门
JRE即Java运行环境,包含Java系统类库,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具。
JVM是Java虚拟机的缩写,它是一个虚拟出来的计算机,通过JVM实现了Java 跨平台的特性,所有的Java编译之后的class文件都通过Jvm来执行。
如下图所示:
2、简述类加载机制的作用和过程?
类加载主要是将编译后的class文件装载到 java运行时的内存中, 将其放在运行时数据区域的方法区内,完成准备状态,可供系统使用。
类加载主要分为三步:加载、链接、初始化,具体如下:
加载:
1) 通过一个类的全限定名来获取其定义的二进制字节流;
2) 将这个字节流所代表的静态存储结构转为方法区的运行时数据结构;
3) 在Java 堆中生成一个代表这个类的java.lang.Class 对象,作为方法区中这些数据的访问入口。
链接:
1) 验证:确保被加载类的正确性;
2) 准备:为类的静态变量分配内存,并将其初始化为默认值 ;
3) 解析:把类中的符号引用转换为直接引用
初始化:
1) 声明类变量是指定初始值;
2) 使用静态代码块为类变量指定初始值;
3、运行时数据区分几块?说说你对每块区域的理解。
运行时数据区主要分五块,本别是:方法区、堆、虚拟机栈、本地方法栈、程序计数器,如下图:
方法区: 用来存储被虚拟机加载的类信息,常量,静态变量 。
堆: 为对象实例分配好内存,用来存放对象实例。
虚拟机栈: 虚拟机栈描述的是Java方法执行的内存模型,素有的方法调用是以栈帧的形式保存起来的。
本地方法栈:主要为本地方法服务,保存了方法的局部变量(class字节码中,在静态方法中,方法栈第一个数据是保存的第一个参数,非静态方法,方法栈中第一个数据保存的是当前对象的引用)
程序计数器: 主要是记录当前线程执行的字节码的行号指示器,且通过线程轮流切换并且分配处理器执行时间来实现JVM的多线程。
以上是 JVM基础知识入门 的全部内容, 来源链接: utcz.com/z/514265.html