howard-he
BlogJava
首页
新随笔
联系
聚合
管理
posts - 4, comments - 0, trackbacks - 0
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
posted on 2011-05-20 22:14
贺斌
阅读(953)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2011年5月 (4)
搜索
最新评论
阅读排行榜
1. mysql 集群 jdbc配置(2425)
2. mysql 主从复制 读写分离配置(1603)
3. JVM内存管理------栈内存(953)
4. JVM内存管理-----堆内存(580)
评论排行榜
1. JVM内存管理-----堆内存(0)
2. JVM内存管理------栈内存(0)
3. mysql 集群 jdbc配置(0)
4. mysql 主从复制 读写分离配置(0)