JVM运行原理
2019-10-08 13:39:36 0 举报
jvm、jvm运行原理
作者其他创作
大纲/内容
类加载器ClassLoader
类构造器初始化时机
初始化完成后堆区创建calss对象
给类变量初始化(静态属性、静态块),注意事初始化,所有的静态属性都是默认值
第七步
方法区(数据共享区是个特殊的堆)
第一步
第六步
堆
hello()方法(构造器)
JVM内存
第三步
第九步
hello对象
java.lang.class对象hello
第四步
静态内存
第十步
1.方法区:calss文件都是加载进方法区2.栈:执行方法都会进栈,执行完后弹栈(销毁该方法),先进后出原则,包括方法内部的堆区对象的引用(指针),局部的变量。3.堆:存储对象的空间
public static void main(String[] args) {\thello hello = new hello()}
方法区、堆、栈的简单说明
栈(方法栈)
给静态变量与静态类赋值(把类的静态变量、块全部执行一遍)
1.创建类的实例2.访问类或接口的statis变量,或者对statis变量赋值3.调用类的statis方法4.调用反射(如Class.forName(“com.my.test.Test”))5.初始化一个类的子类6.Jvm启动时被标明为启动类的类(就是命令行执行java时指定的那个带有main方法的类,就是启动类)注:1.如果初始化类构造器之前的操作没有做,它会触发类的加载与静态分配内存2.初始化类构造器会先去初始化父类,类加载器也是先去加载父类,并且类加载器只会加载一次class,如果之前加载过直接去内存里面获取
进入方法区
hello.class文件
加载进jvm内存
给静态变量、块分配内存
第十一步
通过类加载器加载
calss对象,反射就是通过这个对象操作的
在堆区创建对象
一些对象的成员变量。。
第二步
hello hello = new hello()
hello(){ }
初始化类构造器(()方法)
第五步
第十二步
第八步
内存地址赋给heelo
mian方法
执行完方法后当前方法销毁。
0 条评论
回复 删除
下一页