JVM模型

    xiaoxiao2023-10-12  173

    根据《JAVA虚拟机规范》,JVM模型一般分为4大部分,如下图:

    1、类加载器(ClassLoader)

             在JVM启动或运行时加载需要的class文件到JVM中;下图表示从java源文件到JVM的整个过程:

    2、内存区(也叫运行时数据区)

             JVM运行的时候所分配的区域,内存区可以划分为以下几个部分:

             a、方法区

                      用于存放类结构等信息的地方,主要包括常量池、静态变量、构造函数等;

             b、Java栈

                      Java栈总是与线程关联在一起,每创建一个线程时,就会为这个线程创建一个对应的java栈,每运行一个方法就会创建一个栈帧,用于存放对应的局部变量、操作栈和方法返回值等。每一个方法从调用到完成的过程,就对应一个栈帧在Java栈中的入栈与出栈的过程;所有Java栈是线程所私有的;

             c、Java堆

                      存储Java实例和对象的地方;这里是GC的主要运作区域;Java栈和Java堆都是被所有线程共享的;

                      GC的两种算法:引用计数法、可达性算法;

             d、本地线程栈

                      和Java栈的作用差不都,只不过是为了JVM调用本地方法服务的;

             e、程序计数器

                      用于保存当前线程执行的内存地址;由于JVM是多线程的(多个线程轮流切换),为了保证线程切换回来后,还能恢复到原先状态,就需要一个独立的计数器,来记录之前中断的地方,因此程序计数器也是线程私有的;

    3、执行引擎

             执行class文件中的字节码指令;

    4、本地库

             主要调用C或者C++实现的本地方法及返回结果;

    最新回复(0)