stack與heap的區(qū)別和特點(diǎn)?
1.heap是堆,stack是棧。
2.stack的空間由操作系統(tǒng)自動(dòng)分配和釋放,heap的空間是手動(dòng)申請(qǐng)和釋放的,heap常用new關(guān)鍵字來分配。
3.stack空間有限,heap的空間是很大的自由區(qū)。
在Java中,
若只是聲明一個(gè)對(duì)象,則先在棧內(nèi)存中為其分配地址空間,
若再new一下,實(shí)例化它,則在堆內(nèi)存中為其分配地址。
4.舉例:
數(shù)據(jù)類型 變量名;這樣定義的東西在棧區(qū)。
如:Object a =null; 只在棧內(nèi)存中分配空間
new 數(shù)據(jù)類型();或者malloc(長(zhǎng)度); 這樣定義的東西就在堆區(qū)
如:Object b =new Object(); 則在堆內(nèi)存中分配空間