堆 棧 方法區簡述

2021-08-20 14:14:37 字數 491 閱讀 4804

先看以下:

通常我們定義乙個基本資料型別的變數,乙個物件的引用、方法呼叫的現場儲存都使用記憶體中的棧空間;棧空間操作最快但是也很小。

而通過new關鍵字和構造器建立的物件放在堆空間;整個記憶體包括硬碟上的虛擬記憶體都可以被當成堆空間來使用。

靜態區儲存class位元組碼檔案、靜態變數。堆疊

記憶體申請方式

程式設計師自己申請,申請時需要指明申請的大小

系統自己分配

系統響應方式

遍歷記憶體空閒位址鍊錶,找到比申請的要大的堆結點,將其 中申請的大小分配給程式,程式空間放入空閒鍊錶中

棧的剩餘空間不足時會overflow

最大空間大小

由系統中的有效虛擬記憶體決定

2m執行效率

慢、易產生記憶體碎片、靈活

快、無記憶體碎片

參考:

堆疊方法區理解

如下圖所示 1.值型別如 string,int,bool,double,folat,char.這些基本型別儲存的都直接是值,並且不占用空間,所以都儲存在棧中。2.靜態物件儲存在方法區中,而方法區的物件在程式結束之前都會一直存在,所以建議通常儲存一些工具類,要維護的集合等,最好不要儲存一次性或多次被拋...

記憶體區 堆疊

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

java學習之堆 棧 方法區特點

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