黑马程序员技术交流社区

标题: 堆内存存对象 那么方法区里面只存方法吗? [打印本页]

作者: 苏格拉底的弟子    时间: 2012-1-5 17:27
标题: 堆内存存对象 那么方法区里面只存方法吗?
本帖最后由 苏格拉底的弟子 于 2012-1-6 10:29 编辑

堆内存只存对象 那么方法区里面只存方法吗?里面还有哪些东西?
作者: 于海生    时间: 2012-1-5 17:38
Java内存分配与管理是Java的核心技术之一,一般Java在内存分配时会涉及到以下区域:

寄存器:我们在程序中无法控制
栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中
堆:存放用new产生的数据
静态域:存放在对象中用static定义的静态成员
常量池:存放常量
非RAM存储:硬盘等永久存储空间

方法区:所有线程共享,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码。因为存储加载的class文件,所以常量池(class文件常量池和运行时常量池)也在这里,即常量池是方法区的一部分。
作者: 于海生    时间: 2012-1-5 17:38
Java内存分配与管理是Java的核心技术之一,一般Java在内存分配时会涉及到以下区域:

寄存器:我们在程序中无法控制
栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中
堆:存放用new产生的数据
静态域:存放在对象中用static定义的静态成员
常量池:存放常量
非RAM存储:硬盘等永久存储空间

方法区:所有线程共享,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码。因为存储加载的class文件,所以常量池(class文件常量池和运行时常量池)也在这里,即常量池是方法区的一部分。
作者: 代臣    时间: 2012-1-5 18:47
方法区(也叫共享区、数据区):
类中的共享数据(被static修饰的数据、方法)、方法(没有被static修饰的方法)都存储在这里。
简单说方法区是所有方法(包括被静态修饰的方法)、被静态修饰的数据的存储区,他们都随着对象存储在方法区。
希望对你有用。
作者: 苏格拉底的弟子    时间: 2012-1-5 21:47
楼上的图好啊
作者: 卢其龙    时间: 2012-1-5 22:47
  ◆寄存器:我们在程序中无法控制                                                                           ------我们控制不了,在视频没有讲过
  ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中      
  ◆堆:存放用new产生的数据
  ◆静态域:存放在对象中用static定义的静态成员
  ◆常量池:存放常量                                                                                              -------也给就是视频说的方法区
  ◆非RAM存储:硬盘等永久存储空间                                                                         ---------也给在视频应该也没有接触过




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2