堆疊方法區理解

2022-06-12 21:48:13 字數 729 閱讀 3247

如下圖所示:

1.值型別如:string,int,bool,double,folat,char...這些基本型別儲存的都直接是值,並且不占用空間,所以都儲存在棧中。

2.靜態物件儲存在方法區中,而方法區的物件在程式結束之前都會一直存在,所以建議通常儲存一些工具類,要維護的集合等,最好不要儲存一次性或多次被拋棄的物件,因為方法區中的資料在伺服器停止之前是不會被消除的。

3.正常物件儲存在堆中,因為物件占用的空間較大所以儲存在堆中較為合理,平時程式設計最多存放的地方也是在堆中。

4,變數間互相賦值就是互相複製各自棧中的值給對方。你棧中存放的是值就複製值,是引用就複製引用。

特性:

場景:基本型別/自定義型別  變數名1  = 變數名2(基本型別/自定義型別);

基本變數修改:因為基本變數的值是存在棧中的(沒有堆這一說),所以新變數被改變對以前的變數沒任何影響。

物件修改:因為棧中只存物件位址,所以修改就得在堆中改變(棧中不動),所以物件被改變後大家引用的物件都會變為最新的物件

堆 棧 方法區簡述

先看以下 通常我們定義乙個基本資料型別的變數,乙個物件的引用 方法呼叫的現場儲存都使用記憶體中的棧空間 棧空間操作最快但是也很小。而通過new關鍵字和構造器建立的物件放在堆空間 整個記憶體包括硬碟上的虛擬記憶體都可以被當成堆空間來使用。靜態區儲存class位元組碼檔案 靜態變數。堆疊 記憶體申請方式...

記憶體區 堆疊

一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其 操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os回 收 注意它...

java學習之堆 棧 方法區特點

棧描述的事方法執行的記憶體模型,每個方法被呼叫都會建立乙個棧幀 儲存區域性變數 運算元 方法出口等 jvm為每個執行緒建立乙個棧,用於存放該執行緒執行方法的資訊 實際引數 區域性變數等 棧屬於執行緒私有,不能實現執行緒間的共享!先進後出,後進先出 由系統自動分配,速度快!是乙個連續的記憶體空間1.堆...