A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李栋梁 中级黑马   /  2012-11-17 21:26  /  1281 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李栋梁 于 2012-11-18 20:29 编辑

如:方法,静态量,变量,类等在内存的存放位置

4 个回复

正序浏览
Java把内存划分成四种:heap(堆内存)、stack(栈内存)、data segment(静态变量或是常量存放区)、codesegment(方法区).

  在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。

  当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。

  堆内存用来存放由new创建的对象和数组。

  在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。

  在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。

  引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
java中内存主要包含4块,即heap(堆内存)、stack(栈内存)、data segment(静态变量或是常量存放区)、codesegment(方法区).
堆内存中存放的是new出的对象,new出的对象只包含成员变量。
栈内存中:存放的是局部成员变量。对于基本的数据类型存放的是基本变量的值,而对于对象变量,存放的是堆内存的地址。
静态、常量区:存放的是静态变量(类变量)或是常量。
方法区:存放的是对象的方法。因此即使new出多个对象也是只是存在一个方法。


A a = new A(); A中含有一个work方法,2个成员变量a,b。那么对应的内存分配为
则 a是分配在栈内存中。里面存放了一个指向堆内存中存放的new A()的地址。
new A()会导致在堆内存中分配一块空间,该内存中的A对象同时会含有a和b。
work()方法会在codesegment区中分配内存。
如果此时 A b = a;则表示把a的值复制给b,即b的值为a中保存的地址

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
百度的,参考下:
◆寄存器:我们在程序中无法控制

◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中

◆堆:存放用new产生的数据

◆静态域:存放在对象中用static定义的静态成员

◆常量池:存放常量

http://developer.51cto.com/art/201009/225071.htm

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 辛苦了 。

查看全部评分

回复 使用道具 举报
本帖最后由 邵天强 于 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中保存的地址

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马