标签:
首先说明内存总体分为了4个部分,
包括
1.stack segment (栈区存储基本数据类型的局部变量,对象的引用名)
2.heap segment(堆区,一般用于存储java中new 出来的对象)
3.code segment (代码段)
4.data segment (数据段,静态数据常量)
其中我们程序中用关键字new出来的东西都是存放在heap segment;
程序中的局部变量存放在stack segment,这些局部变量是在具体方法执行结束之后,系统自动释放内存资源(而heap segment中的资源需要java垃圾回收机制来处理); 程序中的方法,是内存中的code segment中的,而且是多个对象 共享一个代码空间区域;
static静态变量,需要放在内存中的data segment中, 下面是一个例子程序的内存分析
class Demo{
private int firistNum;
private int secondNum;
public static int temp = 3;
public Demo(int firstNum,int secondNum){
this.firstNum = firstNum;
this.secondNum = secondNum;
}
}
public class Test{
Public static void main(String [] args){
Demo test = new Demo(3,4);
}
}
下面是内存空间分配的过程
第二步执行过程
这是整个main方法执行过程中的内存空间分配,分析好内存对以后分析逻辑性错误的程序非常重要。
标签:
原文地址:http://www.cnblogs.com/xiohao/p/4296097.html