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

回到顶部