類的成員變數都在堆上,只有方法裡面定義的基礎變數,在方法裡面定義的引用
其他物件的引用放在棧上(這個時候被引用的物件和它的成員變數還是在堆上)
也就是說,執行緒上下文的東西在棧上,其他統統在堆上。
1.暫存器:最快的儲存區, 由編譯器根據需求進行分配,我們在程式中無法控制。2.棧:存放基本型別的變數資料和物件的引用,但物件本身不存放在棧中,而是存放在堆(new 出來的物件)或者常量池中(字串常量物件存放在常量池中)。
3.堆:存放所有new出來的物件。
4.靜態域:存放靜態成員(static定義的)。
5.常量池:存放字串常量和基本型別常量(public static final)。
6.非ram儲存:硬碟等永久儲存空間。
不是,樓上回答的已經很完善了,棧裡面存放基本型別的變數資料和物件的引用,比如int i=1;這是放在棧裡面的;string s=new string("123");這個裡面,s是放在棧裡面的,而new出來的string型別物件是放在堆裡的。
區分放在地方是看型別決定不是作用域決定的哈
堆記憶體和棧記憶體詳解
堆 順序隨意 棧 先進後出 堆和棧的區別 一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧 2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不...
堆記憶體和棧記憶體詳解
堆記憶體和棧記憶體詳解 2010年06月06日 星期日 8 45 堆 順序隨意 棧 先進後出 堆和棧的區別 一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中...
堆記憶體和棧記憶體詳解
堆 順序隨意 棧 先進後出 堆和棧的區別 一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧 2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不...