棧和堆都是處于內(nèi)存區(qū)域。棧是由系統(tǒng)自動(dòng)分配壹士,而堆是人為申請(qǐng)開辟的。棧獲得的空間要遠(yuǎn)小于堆獲得的空間。棧中主要存放的是局部變量而堆中主要存放的是數(shù)組和對(duì)象
棧的優(yōu)勢(shì)是:存取速度比堆要快踩蔚,僅次于直接位于cpu中的寄存器。缺點(diǎn):存在棧中的數(shù)據(jù)大小和生存期必須是確定的枚粘,缺乏靈活性馅闽,另外,棧數(shù)據(jù)是可以共享的
堆的優(yōu)勢(shì)是可以動(dòng)態(tài)地分配內(nèi)存大小馍迄,生存期不必事先告訴編譯器福也,java的垃圾收集器會(huì)自動(dòng)收走這些不再使用的數(shù)據(jù)。缺點(diǎn)是:要在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存攀圈,存取速度較慢暴凑。