这个问题,一直困扰着我,平时的工作与学习也很少关注,就算关注了,基本也会忘记,今天又看了一遍,写点记录吧。
1.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆,顺序随意。栈,后进先出(Last-In/First-Out)。
2.堆和栈的区别可以用如下的比喻来看出:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
3.在java中方法里定义的变量,存储在栈内存,当方法结束时,自动销毁。而new的对象是存储在堆内存里的,不会随方法结束而销毁,除非没有被另外的引用变量引用,会在被JVM在适当的时候回收。
(注:参考别人的文字,自己copy总结的)