一个java文件的游历
类加载子系统把文件加载到内存模型中,然后字节码执行引擎来执行内存中加载的代码
main方法执行的时候(也叫main线程),会给它分配一个栈区(也叫线程栈),栈区里面用来放main里面的局部变量(即一些临时数据)
上面一句话总结来说就是,每当有一个线程运行的时候,它都会有一个栈区域
而线程里面的方法,我们给它分配的是栈帧,这个栈帧用来存放这个方法里面的局部变量。栈帧就好像栈里面包裹的小栈,但是栈帧与栈帧之间是分开的,哪怕main栈帧与main方法里面的其他方法栈帧,也是兄弟关系。(注意,细分来讲,局部变量是在栈中的栈帧中)
方法执行完毕之后,它对应的栈帧会被销毁,即栈帧就出栈,所以我们也称栈是放临时数据的地方。
程序计数器:存放一个地址,当一个线程没有抢占到cpu,被挂起后,下一次抢到cpu时会根据程序计数器的地址来知道这个线程之前运行到哪了。
方法区:常量池就在方法区中,方法区里面主要放常量(final修饰的)+静态变量+类信息
这一路,灯火通明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现