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

java存储机制
看完think in java我有几个问题一直不是太理解,物理内存中是不是应该有栈和堆,java的基本数据类型是保存在栈里,机制是后进先出,对象是保存在堆里,栈里只是进行简单的进出,也就是说一个对象实例化到运行的时候也就相当于创建了2个对象,一个在内存的堆里保存这个对象,一个是在内存的栈里记录绝对地址,而List,ArrayList,LinkerList,Stack等等这些容器里里变也有栈,队列等等存取机制,这些对象是保存在堆里无可置疑,栈里记录地址,他们的处理机制是在java虚拟机上处理进行集合类的排列,然后根据存取进行逻辑操作,也可以说这些容器都是泛型类,但是泛型类是不是都是容器呢?我感觉不是,当然我不知道确切的答案,上边是我个人的理解,也不知道是不是很正确,希望知道的高手回答,不会的别乱说,关系到我的开发思想,谢谢!

------解决方案--------------------
如果你熟悉汇编的话,应该很好理解了!

Stack 就是一段临时的内存单元(ESS:ESP),他们会在这段代码使用完毕后,直接被清理掉。这里的stack一般不存在先入先出问题(当然你pop也是可以的)

而heap , 是一段共享内存单元,必须明确的释放才可以。