初学JVM内存划分

栈空间

栈空间:函数的局部变量(常规变量都是栈空间)
回收:根据变量的作用域(生命周期)
栈空间申请的变量没有默认值(需要手动赋值)

堆空间

堆空间:凡是用 new 申请的空间,都在堆空间
回收:由垃圾回收器进行自动回收的(无需程序员管理)
在堆空间申请的变量,若是数字类型的,默认值为0;若是引用变量(指针变量),值为null

数组名在栈空间

`int a[]=null;`  

数组名a是一个引用,未分配空间

数组在堆空间

`a=new int[10];` 

数组在java中被看作对象,获取长度用a.length,new一个空间——a在栈空间,数组在堆空间

数组特性

int a[];  
a=new int[10];
a[0]=90;
int b[]=a; b[0]8=10; //a[0]也会被修改,a、b指向同一空间

结果:a在堆空间中,a[0]-a[9]在栈空间中,示意图如下(图中 圈内 表示堆空间,圈外 表示栈空间)
创建指向同一空间的两个数组

发布了1 篇原创文章 · 获赞 0 · 访问量 4

猜你喜欢

转载自blog.csdn.net/weixin_43772228/article/details/105659950
今日推荐