日期:2014-05-20  浏览次数:20710 次

内存问题
Java中一个进程对映四块区域分别是:
    堆,堆栈,数据段,代码段
一般变量和引用是在堆栈中分配
对象是在堆中分配。

我想问的是:对象不也是由变量和引用所组成吗?那按照上面所说,都放到堆栈中,那堆中放什么?
请大虾们详细帮我分析下Java内存的机制,有没有专门介绍内存的书?

------解决方案--------------------
堆中放对象的实体,是用new的时候创建出来的,存的是构造方法实例化之后的实体
------解决方案--------------------
介绍java数据结构的书中应该有这个方面的描述的
------解决方案--------------------
方法中声明的变量分配于栈中,如果这个变量是一个引用类型,栈中它的位置存储的是一个指针,指向堆中的一个内存块的首地址,这个地址可能是0(此时变量引用的是null)。而这个堆中的内存块,就是jvm为对象分配的内存空间,里面含有各个方法的指针和成员变量,以及静态变量区地址、类型信息等。
类的成员变量实际上是存在于堆中的。