1. 程式人生 > 實用技巧 >關於java堆疊的總結

關於java堆疊的總結

一些基本的資料結構概念


用來存放基本型別的變數資料和物件的引用,但物件本身不在棧中,而是存放在堆中(通過new關鍵字建立),也會建立在常量池中,如字串常量物件。

靜態域:
存放靜態成員(通過static定義)

堆:
存放所有new出來的物件。

常量池:
存放字串常量和基本型別的常量(通過public static final修飾)


關於棧:
1、棧和常量池中的物件可以共享,但對於堆中的物件不可以共享。
2、棧中的資料大小和生命週期是可以確定的。
3、當沒有引用指向棧中的資料時,這個資料就會消失。
4、字串的物件引用一般儲存在棧中,如果是程式設計時直接定義的,那麼就儲存在常量池中,如果是通過new物件的方式建立,呢麼會儲存在堆中。相等的字串在常量池中只會有一份。

關於堆:
堆中的物件在不被引用時由垃圾回收器負責回收。

若通過new建立一個“pig”字串,JVM會先去常量池看存不存在“pig”字元,如果不存在,則建立一個常量池物件,再建立一個堆物件。
在這裡插入圖片描述

形式引數是區域性變數,區域性變數的資料存在於棧記憶體中。棧記憶體中的區域性變數隨著方法的消失而消失。

成員變數儲存在堆中的物件裡面,由垃圾回收器負責回收。