五月婷婷018_国产 经典 精品 欧美 日韩_日韩一区二区在线播放_久久精品无线播放

有途教育

java堆和棧的區(qū)別

吳佳琪 2023-05-05 17:28:06

java堆是在程序運行時,而不是在程序編譯時,申請某個大小的內(nèi)存空間。即動態(tài)分配內(nèi)存,對其訪問和對一般內(nèi)存的訪問沒有區(qū)別。棧是先進(jìn)后出的,但是于堆而言卻沒有這個特性,兩者都是存放臨時數(shù)據(jù)的地方。

java堆和棧的區(qū)別

JVM棧(Java Virtual Machine Stacks): Java中一個線程就會相應(yīng)有一個線程棧與之對應(yīng),因為不同的線程執(zhí)行邏輯有所不同,因此需要一個獨立的線程棧,因此棧存儲的信息都是跟當(dāng)前線程(或程序)相關(guān)信息的,包括局部變量、程序運行狀態(tài)、方法返回值、方法出口等等。每一個方法被調(diào)用直至執(zhí)行完成的過程,就對應(yīng)著一個棧幀在虛擬機(jī)棧中從入棧到出棧的過程。

堆(Heap): 堆是所有線程共享的,主要是存放對象實例和數(shù)組。處于物理上不連續(xù)的內(nèi)存空間,只要邏輯連續(xù)即可。

方法區(qū)(Method Area): 屬于共享內(nèi)存區(qū)域,存儲已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù)。

常量池(Runtime Constant Pool): 它是方法區(qū)的一部分,用于存放編譯期生成的各種字面量和符號引用。

熱門推薦

最新文章