JVM内存管理------栈内存

JVM内存管理------栈内存
本篇学习栈内存基本知识,附上JAVA代码
 1 package  com.howard.jvm;
 2 /** */ /**
 3 * JAVA的内存管理 (一) 栈内存
 4 * Stack栈 栈内存  JAVA程序的运行区。 是在线程创建时创建,它的生命周期是跟随线程的生命周期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题
 5 * 只要线程一结束,该栈就Over。
 6 * 栈中的数据都是以栈帧(Stack Frame)的格式存在,栈帧是一个内存区块,是一个数据集,是一个有关方法(Method)和运行期数据的数据集,当一个方法
 7 * A被调用时就产生了一个栈帧F1,并压入到栈中,A方法又调用B方法,于是产生栈帧F2也被压入栈,执行完毕后,先弹出F2栈帧,然后再弹出F1栈帧,遵循“
 8 * 后进先出”的原则。
 9 * 栈帧中主要保存3类数据:
10 * 1. 本地变量(local Variables),包括输入参数和输出参数以及方法内变量;
11 * 2. 栈操作(Operand Stack),记录入栈和出栈操作;
12 * 3. 栈帧数据(Frame Data),包括类文件、方法等等。
13 *
14 * @author Administrator
15 *
16 */

17 public   class  StackMemory  {
18
19    public void methodA() {
20        System.out.println("产生一个栈帧F1");
21        int i = 1;
22        System.out.println("变量i 放入到栈帧F1中");
23        System.out.println("准备产生一个栈帧F2");
24        methodB("hello world");
25    }

26
27    public String methodB(String arg) {
28        System.out.println("产生一个栈帧F2");
29        System.out.println("参数arg 和 方法返回值 放入到栈帧F2中");
30        return arg;
31    }

32
33    public static void main(String[] args) {
34        StackMemory sm = new StackMemory();
35        System.out.println("准备产生一个栈帧F1,因为将要调用methodA方法");
36        sm.methodA();
37    }

38
39}

40



你可能感兴趣的:(JVM内存管理------栈内存)