關閉→
當前位置:知科普>IT科技>堆和棧的區別

堆和棧的區別

知科普 人氣:2.99W
品牌型號:聯想 YOGA 14c/系統版本:windows7

一、空間分配不同:

1、堆區(heap)— 由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表。

2、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。

二、分配空間不同:

1.、Java的堆是一個運行時數據區,類的對象從堆中分配空間。這些對象通過new等指令建立,通過垃圾回收器來銷燬。

2 、棧中主要存放一些基本數據類型的變量(byte,short,int,long,float,double,boolean,char)和對象的引用。

三、緩存方式不同:

1、堆是存放在二級緩存中,生命週期由虛擬機的垃圾回收算法來決定。所以,調用這些對象的速度相對來得低一些。

2、棧使用的是一級緩存,通常被調用時處於存儲空間中,調用完畢立即釋放。

四、數據結構不同:

1、堆的數據結構可以被看成是一棵樹,如堆排序。

2、棧是一種先進後出的數據結構。

堆和棧的區別

(推薦課程:Java基礎技術詳解)

TAG標籤:#