JAVA資料的儲存位置

2021-08-07 17:38:24 字數 667 閱讀 6022

一條程序的棧區、堆區、資料區和**區在記憶體中的對映 

1>棧區:主要用來存放區域性變數, 傳遞引數, 存放函式的返回位址。.esp 始終指向棧頂, 棧中的資料越多, esp的值越小。 

2>堆區:用於存放動態分配的物件, 當你使用 malloc和new 等進行分配時,所得到的空間就在堆中。動態分配得到的記憶體區域附帶有分配資訊, 所以你  能夠 free和delete它們。 

3>資料區:全域性,靜態和常量是分配在資料區中的,資料區包括bss(未初始化資料區)和初始化資料區。 

注意: 

1)堆向高記憶體位址生長; 

2)棧向低記憶體位址生長; 

3)堆和棧相向而生,堆和棧之間有個臨界點,稱為stkbrk。 

1、一條程序在記憶體中的對映 

假設現在有乙個程式,它的函式呼叫順序如下: 

main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...),即:主函式main呼叫函式func_1; 函式func_1呼叫函式func_2; 函式func_2呼叫函式func_3。 

當乙個程式被作業系統調入記憶體執行, 其對應的程序在記憶體中的對映如下圖所示:

來自部落格

java中String的儲存位置

public class test string在對在編譯時可以確定的常量會做一定的優化,把其放在字串常量池中。ab1 ab2為true 和 new出來的物件都是儲存在堆內 物件引用都是儲存在棧內 string a a 這條語句在執行的時候,會在常量池內建立乙個string物件,內容為a,a指向這個...

Fabric區塊資料的儲存位置

byfn.sh up啟動1個示例網路,在該指令碼中有一行命令用於啟動docker docker compose f docker compose cli.yaml f docker compose etcdraft2.yaml up ddocker compose cli.yaml檔案定義了5個卷標...

C 中資料儲存的位置

乙個由 c c 編譯過的程式占用的記憶體分為以下幾個部分 棧區 就是那些由編譯器在需要的時候分配,在不需要的時候自動清除的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆區 動態記憶體分配 通過new和malloc分配,由delete或free手動釋放或者程式結束自動釋放。動態記憶體的生存期...