系統(tǒng)版本:EMUI 11.0
堆棧的區(qū)別:
1、堆棧空間分配方式不同
堆(操作系統(tǒng)): 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時可能由OS回收,分配方式類似于鏈表。
棧(操作系統(tǒng)):由操作系統(tǒng)(編譯器)自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。
2、堆棧緩存方式不同
棧使用的是一級緩存,它們通常都是被調(diào)用時處于存儲空間中,調(diào)用完畢立即釋放。
堆則是存放在二級緩存中,生命周期由虛擬機的垃圾回收算法來決定(并不是一旦成為孤兒對象就能被回收)。所以調(diào)用這些對象的速度要相對來得低一些。
3、堆棧數(shù)據(jù)結(jié)構(gòu)不同
堆(數(shù)據(jù)結(jié)構(gòu)):堆可以被看成是一棵樹,如:堆排序。
棧(數(shù)據(jù)結(jié)構(gòu)):一種先進后出的數(shù)據(jù)結(jié)構(gòu)。