久久综合久久香蕉网欧美,久久影院免费高清电影,久久国语国产亚州,在线中文字幕有码中文

        有途教育

        java堆和棧的區(qū)別

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

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

        java堆和棧的區(qū)別

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

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

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

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

        熱門推薦

        最新文章