JVM 极简教程 一

 每执⾏⼀个Java⽅法,就将⽅法存⼊Java栈,每执⾏⼀个本地⽅法,也就是native⽅法,就将⽅
法存⼊本地⽅法栈中,⽅法执⾏完后就从栈中移除

程序计数器⽤来记录待执⾏的下⼀条字节码指令地
址,⽅法执⾏过程中产⽣的Java对象会存⼊堆中,垃圾回收器会回收已经没有被使⽤的Java对象,JIT编
译器会在程序运⾏过程中发现热点代码,并编译为机器指令,从⽽提⾼执⾏效率。

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

 



posted @   予真  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示