靜態區 常量池

2021-10-08 09:31:30 字數 657 閱讀 1111

靜態區

靜態變數(又叫類變數,有static修飾)和靜態方法存放在靜態區;

使用某乙個類的時候,需要將該類的位元組碼檔案載入到元空間;

在載入的過程中,會先檢查類中有沒有static修飾的成員;

如果有,就會優先將static修飾的成員載入到靜態區。

建立類的物件之後,物件存放在堆中,物件的變數名存放在棧中main方法的棧幀中,存放的資料是物件在堆中的位址,而該類的靜態成員是被所有該類的物件而共享,修改的都是同乙個

常量池(在記憶體中)

宣告乙個常量為a,值為abc,這個常量放在常量池中;

當建立第二個常量b時,發現值也是abc,在常量池中已經有了,那麼直接就讓b直接指向常量池中的abc,所以二者用==比較的結果是true。

當建立c時,是通過建立物件的方式,重新為c開闢了一塊記憶體來存放它,所以用雙等號比較的結果是false.

享元模式同理:數值型別的範圍是-128~127,就是為了減少記憶體的使用

堆區 棧區 靜態區 常量區還有???

常見的儲存區域可分為 由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,程式會一直占用記憶體,導致記憶體洩漏...

棧 堆 方法區 常量池

存放j a在函式中定義的基本型別的變數的引用和資料,以及物件的引用都放在棧中儲存。主要存放new出來的物件和陣列。儲存已經被虛擬機器載入的類資訊 常量 靜態變數,即編譯器編譯後的 等資料。靜態變數 常量在方法區 所有方法,包括靜態和非靜態的,也在方法區。靜態常量池 靜態常量池存在於class檔案中。...

堆,棧,靜態儲存區和常量儲存區

在c 中,記憶體分成4個區,他們分別是堆,棧,靜態儲存區和常量儲存區 1 棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清除的變數的存 儲區.裡面的變數通常是區域性變數,函式引數等.2 堆,又叫自由儲存區,它是在程式執行的過程中動態分配的,它最大的特性就是動.態性.由new分配的記憶體塊,...