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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 苏格拉底的弟子 于 2012-1-6 10:29 编辑

堆内存只存对象 那么方法区里面只存方法吗?里面还有哪些东西?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

8 个回复

倒序浏览
Java内存分配与管理是Java的核心技术之一,一般Java在内存分配时会涉及到以下区域:

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

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

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

方法区:所有线程共享,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码。因为存储加载的class文件,所以常量池(class文件常量池和运行时常量池)也在这里,即常量池是方法区的一部分。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
方法区(也叫共享区、数据区):
类中的共享数据(被static修饰的数据、方法)、方法(没有被static修饰的方法)都存储在这里。
简单说方法区是所有方法(包括被静态修饰的方法)、被静态修饰的数据的存储区,他们都随着对象存储在方法区。
希望对你有用。
回复 使用道具 举报
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

偶奇偶偶ihi.jpg (47.83 KB, 下载次数: 141)

偶奇偶偶ihi.jpg

评分

参与人数 1技术分 +2 收起 理由
admin + 2 赞一个!

查看全部评分

回复 使用道具 举报
楼上的图好啊
回复 使用道具 举报
soh 黑马帝 2012-1-5 22:01:49
7#
java运行的时候,用到哪个方法,才会把这个方法调入stack中。运行结束,这个方法就会从stack中移除。
回复 使用道具 举报
每一个被加载的类型,在Java虚拟机中都会在方法区中保存如下信息:
          1)、类型的全名(The fully qualified name of the type)
          2)、类型的父类型的全名(除非没有父类型,或者弗雷形式java.lang.Object)(The fully qualified name of the typeís direct superclass)
          3)、给类型是一个类还是接口(class or an interface)(Whether or not the type is a class )
          4)、类型的修饰符(public,private,protected,static,final,volatile,transient等)(The typeís modifiers)
          5)、所有父接口全名的列表(An ordered list of the fully qualified names of any direct superinterfaces)
类型全名保存的数据结构由虚拟机实现者定义。除此之外,Java虚拟机还要为每个类型保存如下信息:
          1)、类型的常量池(The constant pool for the type)
          2)、类型字段的信息(Field information)
          3)、类型方法的信息(Method information)
          4)、所有的静态类变量(非常量)信息(All class (static) variables declared in the type, except constants)
          5)、一个指向类加载器的引用(A reference to class ClassLoader)
          6)、一个指向Class类的引用(A reference to class Class)

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
  ◆寄存器:我们在程序中无法控制                                                                           ------我们控制不了,在视频没有讲过
  ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中      
  ◆堆:存放用new产生的数据
  ◆静态域:存放在对象中用static定义的静态成员
  ◆常量池:存放常量                                                                                              -------也给就是视频说的方法区
  ◆非RAM存储:硬盘等永久存储空间                                                                         ---------也给在视频应该也没有接触过

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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