每执⾏⼀个Java⽅法,就将⽅法存⼊Java栈,每执⾏⼀个本地⽅法,也就是native⽅法,就将⽅
法存⼊本地⽅法栈中,⽅法执⾏完后就从栈中移除
程序计数器⽤来记录待执⾏的下⼀条字节码指令地
址,⽅法执⾏过程中产⽣的Java对象会存⼊堆中,垃圾回收器会回收已经没有被使⽤的Java对象,JIT编
译器会在程序运⾏过程中发现热点代码,并编译为机器指令,从⽽提⾼执⾏效率。
5
先将java⽂件编译为class⽂件,再利⽤类加载器将class⽂件加载到⽅法区中,然后由解析器逐⾏执⾏字
节码,每执⾏⼀个Java⽅法,就将⽅法存⼊Java栈,每执⾏⼀个本地⽅法,也就是native⽅法,就将⽅
法存⼊本地⽅法栈中,⽅法执⾏完后就从栈中移除,程序计数器⽤来记录待执⾏的下⼀条字节码指令地
址,⽅法执⾏过程中产⽣的Java对象会存⼊堆中,垃圾回收器会回收已经没有被使⽤的Java对象,JIT编
译器会在程序运⾏过程中发现热点代码,并编译为机器指令,从⽽提⾼执⾏效率。
类加载⼦系统会将某个class⽂件加载到⽅法区的内存空间中,可以理解为把class⽂件中字节码指
令,读取到内存中。
验证阶段会验证待加载的class⽂件是否正确,⽐如验证⽂件格式
准备阶段会为static变量分配内存并赋零值
解析阶段会将符号引⽤解析为直接引⽤,在⼀个字节码⽂件中,会⽤到其他类,⽽在字节码中只会
存⽤到的类的类名,⽽解析阶段就是会根据类名找到该类加载后在⽅法区中的地址,也就是直接引
⽤,并替换调符号引⽤,这样真正运⾏字节码时,就能直接找到某个类了。
初始化阶段会给static变量赋值,并执⾏static块