摘要: 1、對(duì)象的存儲(chǔ):Java中所有對(duì)象的存儲(chǔ)空間都是在堆中分配的,但是這個(gè)對(duì)象的引用卻是在堆棧中分配,也就是說(shuō)在建立一個(gè)對(duì)象時(shí)從兩個(gè)地方都分配內(nèi)存,在堆中分配的內(nèi)存實(shí)際建立這個(gè)對(duì)象,而在堆棧中分配的內(nèi)存只是一個(gè)指向這個(gè)堆對(duì)象的指針(引用)而已。堆的特點(diǎn)是靈活性,但為此犧牲了高效性,可以在運(yùn)行時(shí)動(dòng)態(tài)地分配存儲(chǔ);堆棧的特點(diǎn)是高效性,但缺乏靈活性,在編譯時(shí)刻必須知道所要分配的空間大小。堆像個(gè)大饅頭,可以根據(jù)你的食量隨便吃,吃飽了算;堆棧像是吃大鍋飯,每個(gè)人都是定食定量的,你必須告訴廚子你的飯量,廚子據(jù)此做飯,然后你們就排隊(duì)打飯吧。它們沒(méi)有孰優(yōu)孰劣之分,各自不同特點(diǎn)有不同的應(yīng)用。
閱讀全文