首先内存总体分为了4个部分,包括 stack segment(栈) 、heap segment(堆)、code segment(代码区) 、data segment (数据区);其中我们程序中用关键字new出来的东西都是存放在heap segment;程序中的局部变量存放在stack segment,这些局部变量是在具体方法执行结束之后,系统自动释放内存资源(而heap segment中的资源需要java垃圾回收机制来处理);程序中的方法,是内存中的code segment中的,而且是多个对象 共享一个代码空间区域;static静态变量,需要放在内存中的data segment中,下面是一个例子程序的内存分析:
下面是内存空间分配的过程
[img]http://dl.iteye.com/upload/attachment/225843/0a39c55d-d10b-35df-8688-e5d93a705116.jpg[/img]
第二步执行过程
[img]http://dl.iteye.com/upload/attachment/225845/c5761207-4ff7-32f0-a2d8-916f0ab2703a.jpg[/img]
这是整个main方法执行过程中的内存空间分配,分析好内存对以后分析逻辑性错误的程序非常重要。
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);
}
}
下面是内存空间分配的过程
[img]http://dl.iteye.com/upload/attachment/225843/0a39c55d-d10b-35df-8688-e5d93a705116.jpg[/img]
第二步执行过程
[img]http://dl.iteye.com/upload/attachment/225845/c5761207-4ff7-32f0-a2d8-916f0ab2703a.jpg[/img]
这是整个main方法执行过程中的内存空间分配,分析好内存对以后分析逻辑性错误的程序非常重要。
本文深入探讨了Java程序运行过程中内存的分配与管理,详细解释了栈、堆、代码区、数据区的区别及作用,重点分析了new关键字使用、局部变量存储方式、方法与静态变量的内存位置,并通过实例程序展示了整个内存空间的分配过程。

被折叠的 条评论
为什么被折叠?



