空間分配區別
棧(操作系統):由操作系統(編譯器)自動(dòng)分配釋放,存放函數的參數值,局部變量的值等。其操作方式類(lèi)似于數據結構中的棧。堆(操作系統):一般由程序員分配釋放,若程序員不釋放,程序結束時(shí)可能由OS回收,分配方式倒是類(lèi)似于鏈表。
堆棧緩存方式區別
棧使用的是一級緩存,它們通常都是被調用時(shí)處于存儲空間中,調用完畢立即釋放。堆則是存放在二級緩存中,生命周期由虛擬機的垃圾回收算法來(lái)決定(并不是一旦成為孤兒對象就能被回收)。所以調用這些對象的速度要相對來(lái)得低一些。