一个java文件的游历

类加载子系统把文件加载到内存模型中,然后字节码执行引擎来执行内存中加载的代码

main方法执行的时候(也叫main线程),会给它分配一个栈区(也叫线程栈),栈区里面用来放main里面的局部变量(即一些临时数据)

上面一句话总结来说就是,每当有一个线程运行的时候,它都会有一个栈区域

而线程里面的方法,我们给它分配的是栈帧,这个栈帧用来存放这个方法里面的局部变量。栈帧就好像栈里面包裹的小栈,但是栈帧与栈帧之间是分开的,哪怕main栈帧与main方法里面的其他方法栈帧,也是兄弟关系。(注意,细分来讲,局部变量是在栈中的栈帧中)

方法执行完毕之后,它对应的栈帧会被销毁,即栈帧就出栈,所以我们也称栈是放临时数据的地方。

 

程序计数器:存放一个地址,当一个线程没有抢占到cpu,被挂起后,下一次抢到cpu时会根据程序计数器的地址来知道这个线程之前运行到哪了。

方法区:常量池就在方法区中,方法区里面主要放常量(final修饰的)+静态变量+类信息

 

 

posted @ 2022-04-19 15:28  朱在春  阅读(15)  评论(0编辑  收藏  举报