黑马程序员技术交流社区

标题: 内存的一些疑问 [打印本页]

作者: 谭辉    时间: 2013-3-20 15:49
标题: 内存的一些疑问
本帖最后由 谭辉 于 2013-3-21 07:40 编辑

下面是毕老师视频中讲到的对象初始化过程
1.     .class文件并加载到内存中.
2.     执行该类中的static代码块,给Person.class类进行初始化
3.     在堆内存中开辟空间,分配内存地址
4.     在堆内存中建立对象的特有属性.并进行默认初始化.
5.     对属性进行显示初始化
6.     对对象进行构造代码块初始化
7.     对对象进行对应的构造函数初始化
8.     将内存的地址赋给栈内存中的p变量

我的疑问是类中的方法,变量,静态方法,和静态变量加载到了内存的哪块区域

作者: 宋耀冬    时间: 2013-3-20 15:55
方法,静态 当类被加载 进入内存的方法区
作者: 袁术森    时间: 2013-3-20 16:14
类的话 就是在被调用时就会加载进内存中的方法区 静态变量 方法都会在方法区中  方法区 也分静态的存储 和非静态的存储。堆内存就是创建实例、对象 所在之地。
作者: 全超    时间: 2013-3-20 16:15
类中的 非静态方法和方法代码,静态的方法和方法代码,静态变量都存放在方法区中。
非静态的类成员变量存放在堆内存中,即对象在堆内存中划分的那块存储区域中。
非静态的局部变量跟随方法区中方法的引用存放在栈内存中。
作者: 袁术森    时间: 2013-3-20 16:17
全超 发表于 2013-3-20 16:15
类中的 非静态方法和方法代码,静态的方法和方法代码,静态变量都存放在方法区中。
非静态的类成员变量存放 ...
非静态的类成员变量存放在堆内存中,即对象在堆内存中划分的那块存储区域中。

是这样的么
作者: 全超    时间: 2013-3-20 16:23
袁术森 发表于 2013-3-20 16:17
是这样的么

哪儿不妥??
作者: 谭辉    时间: 2013-3-20 17:01
全超 发表于 2013-3-20 16:15
类中的 非静态方法和方法代码,静态的方法和方法代码,静态变量都存放在方法区中。
非静态的类成员变量存放 ...

方法区中方法的引用是存放在栈中的吗?
作者: 全超    时间: 2013-3-20 17:11
谭辉 发表于 2013-3-20 17:01
方法区中方法的引用是存放在栈中的吗?

也不能叫引用,方法区中放是方法的代码,当要调用方法区中的方法时要在栈内存中为方法开辟空间
作者: 陈丽莉    时间: 2013-3-20 23:28
若还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~




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