您的位置:首页 > 编程语言 > Java开发

java程序在内存中的分布

2016-04-11 10:44 363 查看

java程序在内存中的分布

标签:
java
2016-04-11 10:44
212人阅读 评论(0)
收藏
举报


分类:
java学习(8)


版权声明:本文为博主原创文章,未经博主允许不得转载。

Java中,java程序在内存中的分布可分为三大模块:堆内存、栈内存和方法区。

堆内存:用于内存空间的申请;用于存放new创建的对象和数组,jvm会定期进行检查,如果不被引用,则回收。

栈内存 : 保存本地变量的地址;是由编译器自动分配释放的。在具体方法执行完毕后,系统会自动释放jvm内存资源。

方法区:方法区也叫数据区或共享区。用于存放静态变量、静态方法以及代码的区域,不释放。

public class Demo{
public void main(String[] args){
int num = 10;
Test test = new Test();
test.show();
}
}
class Test{
int a = 2;
public void show(){
System.out.println(a);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13



如果数据类型是基本数据类型,会直接在栈内开辟空间存储量,例如:num=10;会在栈内存中开辟一个num的空间。存储一个值是10。

但是对于一个引用类型的变量,会开辟一个空间然而存储的是一个内存的首地址,指向堆内存中的这块地址,引用这个对象,因此叫做引用类型、

我们创建了Test对象,接下来调用test的show()方法,会在栈内存中,开辟一个show()方法的栈帧,先指向堆内存中Test()对象,然后指向存储在方法区内的show()方法代码,执行完,show()栈内存将会销毁该栈帧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: