java内存分析,
分享于 点击 9077 次 点评:111
java内存分析,
JavaSE知识总结
2.内存分析
分析内存是深入理解编程的第一步,一下给大家介绍一下java中常见的内存分析,文章的主要脉络:
数据类型
数据类型在上一期也给大家介绍了一下,这一次主要介绍的是各个数据在内存中的存在状态和位置,数据类型的不同,内存分配的位置和大小也会有不同,
局部变量:方法体内部声明的变量,包括形参都是局部变量方法体外
成员变量:类内声明的变量为成员变量
我们编写的代码在内存中的存在情况,直接上一张比较直观便于理解的图:
由图中我们可以看出执行步骤:
- 从硬盘中提取代码加入内存当中。
- 代码存放在代码段;局部变量和基本数据类型存放于栈;引用类型存放于堆中;静态变量、字符串存放于数据段。
内存分析
一维数组
一维数组的初始化
int []a;
a=new int[5];
先在栈内存中声明了a;
然后将a指向堆内存的值
如果数组类型是引用类型
public class Test{
public static void main(String args[]){
Date []days;
days=new Date[3];
for (int i=0;i<3;i++){
days[i]=new Date(2004,4,i+1);
}
}
}
class Date{
int year;int month;int day;
Date(int y;int m;int d){
year=y;
month=m;
day=d;
}
}
执行days= new Date[3];在堆中给days分配三个位置,内容为空,days指向这三个位置
执行循环后,每个days项再指向堆中分配的时间位置:
二维数组
二维数组可以看成以数组为元素的数组
内存回收
栈里面的内存,函数执行完后消失,而堆里面的内存,需要垃圾回收机制回收,不一定马上消失。 实参与局部变量同等对待;函数返回值也会在栈里面临时存放,函数就执行完也就会删除,调用完毕后内存回收,但是只分配空间,没有名字。
相关文章
- 暂无相关文章
用户点评