黑马程序员技术交流社区

标题: 这几天看到毕老师的视频 毕老师一直说一个什么方法区 [打印本页]

作者: 高顺德    时间: 2013-3-26 23:54
标题: 这几天看到毕老师的视频 毕老师一直说一个什么方法区
本帖最后由 天下 于 2013-3-27 00:18 编辑

这几天看到毕老师的视频 毕老师一直说一个什么方法区 ,什么叫方法区?方法区和堆栈有什么关系?

作者: HM朱蛟    时间: 2013-3-27 00:31
我说下我的理解,有什么不对的请指出,一起学习
方法区和 堆,栈 是一样的,属于内存里的一片区域
堆里边主要放的是对象 栈里面主要放的是一些局部变量  
这个方法区呢 我目前只学到字符串那章   所以目前为止了解到里面 大致分为   静态区 非静态区 常量池  静态区放的主要是一些被static修饰的代码,非静态区里面放的是非static修饰的类代码  常量池主要是放的一些字符串

不知道理解有没有偏差  。
作者: 蔡陶军    时间: 2013-3-27 02:57
一共有五个区域
栈区:存放局部变量
堆:存放对象的属性这些
全局代码区:存放方法啊,if、for这些代码的区域,这个区域又分为静态和非静态,静态区:放一些被static修饰的,非静态:存放一些没有被static所修饰的
静态代码区:存放一些装载类之前的东西,比如静态代码块这些

以上就是我所理解到的,不知道对否
作者: 贾振凯    时间: 2013-3-27 11:27
Java 程序运行时的内存结构划分:方法区、栈内存、堆内存、本地方法栈和寄存器

方法区存放装载的类数据信息包括:
1.基本信息:
(1)每个类的全限定名
(2)每个类的直接超类的全限定名(可约束类型转换)
(3)该类是类还是接口
(4)该类型的访问修饰符
(5)直接超接口的全限定名的有序列表
2.每个已装载类的详细信息:
(1)运行时常量池:存放该类型所用的一切常量(直接常量和对其它类型、字段、方法的符号引用),它们以数组形式通过索引被访问,是外部调用与类联系及类型对象化的桥梁。它是类文件(字节码)常量池的运行时表示。(还有一种静态常量池,在字节码文件中)。
(2)字段信息:类中声明的每一个字段的信息(名,类型,修饰符)。
(3)方法信息:类中声明的每一个方法的信息(名,返回类型,参数类型,修饰符,方法的字节码和异常表)。
(4)静态变量
(5)到类classloader的引用:即到该类的类装载器的引用。
(6)到类class 的引用:虚拟机为每一个被装载的类型创建一个class 实例,用来代表这个被装载的类。


这些信息都是很所都是创建对象,调用方法时堆栈的参考信息

作者: 黄诗宾    时间: 2013-3-27 12:10
内存可分为3个区:堆(heap)、栈(stack)和方法区(method)   
方法区(非堆):是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
java堆:是虚拟机中所管理的内存中区域最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。java堆是垃圾收集器管理的主要区域。
java虚拟机栈:线程私有的,它的生命周期与线程相同。每个方法被执行的时候都会同时创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机中从入栈到出栈的过程。




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