java内存机制:
栈: 保存局部变量的值,包括:a.用来保存基本数据类型的值;b.保存类的 实例 ,即堆区 对象 的引用(指针)
堆: 用来存放动态产生的数据,比如new出来的 对象 。
注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。
因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,
但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。
代码段:用来存放从硬盘上读取的源程序代码
方法区:静态变量、常量、方法
类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",
只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).
所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。
栈: 保存局部变量的值,包括:a.用来保存基本数据类型的值;b.保存类的 实例 ,即堆区 对象 的引用(指针)
堆: 用来存放动态产生的数据,比如new出来的 对象 。
注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。
因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,
但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。
代码段:用来存放从硬盘上读取的源程序代码
方法区:静态变量、常量、方法
类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",
只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).
所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。