类加载机制和JVM内存模型

类加载机制和JVM内存模型

一.什么是

class文件加载到jvm中运行

二.过程

1.装载:找到在哪里

(1)通过类的全限定路径名找到类的二进制流 类装载器:ClassLoader

 

保证类的唯一性,先顶层加载,最后轮到我才加载

(2)将字节流所代表的的静态存储结构转化为方法区的运行时数据结构

(3)代表当前类的java.lang.Class对象,放到jvm堆

2.链接

验证:文件格式,元数据,字节码,符号引用的验证

准备:为类的静态变量分配内存,初始化为默认值,方法区分配

解析:将类中的符号引用替换成直接引用

3.初始化

为类的静态变量,静态代码执行真正的初始化操作,比如a=9,a才能真正赋值为9

三.JVM

堆:存储对象,线程共享,生命周期和虚拟机一样 OOM

方法区:存储类信息,常量,静态变量,即时编辑器编译之后的代码,被所有线程共享 OOM

--运行期常量池:用于存放编译期生成的各种字面量和符号引用

虚拟机栈:线程是为了执行方法,每个线程执行的方法就是一个一个栈帧,线程就是一个jvm栈,栈帧就是方法的执行

程序计数器:每个线程里记录当前方法执行的位置

native栈:调用C方法

 

四.栈中的方法调用过程

1.a调用b,b调用c

 

2.栈帧的执行过程

javap反解字节码指令

 

 

 

五.jvm模型

 

 

 

 

 

 

发布了42 篇原创文章 · 获赞 25 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq812858143/article/details/103384231