posts - 4,  comments - 0,  trackbacks - 0
本篇学习栈内存基本知识,附上JAVA代码
 1package 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 */

17public 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



posted on 2011-05-20 22:14 贺斌 阅读(953) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2011年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜