| 本帖最后由 邵天强 于 2012-11-18 00:28 编辑 
 java中内存主要包含4块分别是:
 (1)堆内存(heap)
 (2)栈内存(stack)
 (3)静态变量或常量存放的区
 (4)方法区
 在堆内存中存放的是实例对象,即:new 类(),new出的对象只包含成员变量
 在栈内存中,存放的是局部变量,对于基本的数据类型存放的是基本变量的值,而对于对象变量,存放的是堆内存的地址。
 在静态变量或常量存放的区中,存放的是静态变量或常量
 在方法区中,存放的是对象的方法,因此即使new 出多个对象的方法也是存在一个方法
 例如:
 class Test{
 private String str1;
 private String str2;
 public void test(){
 System.out.println("a");
 }
 public static void main(String[]args){
 Test t=new Test();
 }
 }
 那么对应的内存分配为
 则 t是分配在栈内存中。里面存放了一个指向堆内存中存放的new Test()的地址。
 new Test()会导致在堆内存中分配一块空间,该内存中的Test对象同时会含有str1和str2。
 test()方法会在方法区中分配内存。
 如果此时 Test t1 = t;则表示把t的值复制给t1,即t1的值为t中保存的地址
 
 
 |