本帖最后由 sanguodouble1 于 2014-3-6 11:20 编辑
java的内存可以分为4部分
stack栈
heap堆
code segment 代码区
data segement 数据区
其中stack用来存放 局部变量
heap用来存放对象,你可以理解为new出来的东西
code segment用来存放代码的字节码,比如当你要调用一个方法时,系统就会去这个区中找方法相应的字节码
data segment用来存放数据,比如一些静态常量啊什么的
举个例子,你在main函数中写了下面这条语句
int a = 10;
static int b = 20;
Animal dog = new Animal();
那么他在内存中是这样分布的先在stack中分出一个部分,用来存放变量a,他里面的值是10;
然后在data segment分出一部分,用来存放b,他里面的值是20;
然后又在stack里面划出一部分,用来存放dog,他里面的值是一堆用于指向heap区的引用
最后在heap里划出一部分,用来新建一个Animal类型的对象
通过stack的dog里面的值,可以指向Animal
所以java里虽然没有c++中指针这个概念,但他的引用无处不在
|