JVM 极简教程 一
每执⾏⼀个Java⽅法,就将⽅法存⼊Java栈,每执⾏⼀个本地⽅法,也就是native⽅法,就将⽅
法存⼊本地⽅法栈中,⽅法执⾏完后就从栈中移除
程序计数器⽤来记录待执⾏的下⼀条字节码指令地
址,⽅法执⾏过程中产⽣的Java对象会存⼊堆中,垃圾回收器会回收已经没有被使⽤的Java对象,JIT编
译器会在程序运⾏过程中发现热点代码,并编译为机器指令,从⽽提⾼执⾏效率。
5
先将java⽂件编译为class⽂件,再利⽤类加载器将class⽂件加载到⽅法区中,然后由解析器逐⾏执⾏字
节码,每执⾏⼀个Java⽅法,就将⽅法存⼊Java栈,每执⾏⼀个本地⽅法,也就是native⽅法,就将⽅
法存⼊本地⽅法栈中,⽅法执⾏完后就从栈中移除,程序计数器⽤来记录待执⾏的下⼀条字节码指令地
址,⽅法执⾏过程中产⽣的Java对象会存⼊堆中,垃圾回收器会回收已经没有被使⽤的Java对象,JIT编
译器会在程序运⾏过程中发现热点代码,并编译为机器指令,从⽽提⾼执⾏效率。
类加载⼦系统会将某个class⽂件加载到⽅法区的内存空间中,可以理解为把class⽂件中字节码指
令,读取到内存中。
验证阶段会验证待加载的class⽂件是否正确,⽐如验证⽂件格式
准备阶段会为static变量分配内存并赋零值
解析阶段会将符号引⽤解析为直接引⽤,在⼀个字节码⽂件中,会⽤到其他类,⽽在字节码中只会
存⽤到的类的类名,⽽解析阶段就是会根据类名找到该类加载后在⽅法区中的地址,也就是直接引
⽤,并替换调符号引⽤,这样真正运⾏字节码时,就能直接找到某个类了。
初始化阶段会给static变量赋值,并执⾏static块
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~