最简单易懂的JVM(虚拟机)的结构

  最简单易懂的JVM(虚拟机)的结构

一、结构

1.类加载器: 虚拟机启动(或者类运行)的时候将Java源文件加载到虚拟机中。
2.执行引擎:类文件加载到虚拟机之后会变成字节码(程序执行的指令)
3.内存区:程序执行的时候所用的空间;(可理解为生产厂房)

内存区划分:
a.方法区:存放程序中类的结构信息、常量池、静态变 量、构造函数。(公用的不会变的东西都放在这里,相当于公司 的规章制度,不会变的,定好的东西,和公司的一些工具,大 家通用的。)
b.堆内存:供给大家存放java实例或者对象的地方。跟方法 区一样都是共享的。
c.栈内存:线程运行产生的区域,每个线程执行都需要创建 一个栈内存区。(每个线程可能会执行几个Java方法,没个方法又会去创建一个栈帧,栈帧又是用来存放方法的信息供方法使用的。栈帧和栈的关系是父子关系(栈是父,栈帧是子))
d.程序计数器:每个线程执行的时候都会生成一个计数器,用来记录该线程执行到什么地方了,执行的情况。比如说执行到某地方停了什么时候再继续执行,都是由程序计数器去管理的。程序计数器也属于线程的。
e. 本地方法栈(Native Method Stack):和java栈的作用差不多,只不过是为JVM使用到的native方法服务的。

4.本地方法接口:主要是调用C或C++实现的本地方法及返回结果。

以上内容纯属个人理解。参考:https://blog.csdn.net/moneyshi/article/details/53033577

你可能感兴趣的:(虚拟机结构理解)