本文共 421 字,大约阅读时间需要 1 分钟。
先来一张图总体看看jvm的组成部分。jvm主要由运行时数据区和类加载子系统和执行引擎等组成。 我们重点来总结一下运行时数据区:
1.栈
栈为线程私有,每个线程都有自己的独立栈区域空间,主要用于存储局部变量。 在线程运行时,线程的每个方法,虚拟机都会在栈内单独分配一个独立的空间来用于局部变量的作用域表示,这部分独立的空间被称为栈帧。栈帧是基于线程的私有栈内存来进行分配的,例如:线程main中调用了类Class.methodA() 和Class.methodB(),那main线程栈内存就会首先分配一个栈帧1,用来存储Class变量,接着会在main线程栈内存中再分配一个栈帧2区域,用来存储methodA()的局部变量,接着还会在main线程栈内存再分配一个栈帧3区域,用来存储methodB()的局部变量。当methodB()执行完毕,首先释放栈帧3,接着栈帧2,再接着栈帧1,这就是栈的先进后出原则。 来画一张图解释:转载地址:http://fikmi.baihongyu.com/