java學習之堆 棧 方法區特點

2021-09-11 07:59:35 字數 458 閱讀 6518

棧描述的事方法執行的記憶體模型,每個方法被呼叫都會建立乙個棧幀(儲存區域性變數、運算元、方法出口等);

jvm為每個執行緒建立乙個棧,用於存放該執行緒執行方法的資訊(實際引數、區域性變數等)

棧屬於執行緒私有,不能實現執行緒間的共享!

「先進後出,後進先出」

由系統自動分配,速度快!是乙個連續的記憶體空間1.堆用於儲存建立好的物件和陣列

2、jvm只有乙個堆,被所有執行緒共享

3、堆是乙個不連續的記憶體空間,分配靈活,速度慢

1、jvm只有乙個方法區,被所有執行緒共享!

2、方法實際也是堆,只是用於儲存類、常量相關的資訊

3、用來存放程式中永遠不變或唯一的內容(**、靜態變數、字串常量等)

以上3個便於我們在程式執行時進行記憶體變化的分析!

堆 棧 方法區簡述

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

堆疊方法區理解

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

Java中的堆 棧 方法區深入分析

基本概念堆區 1.儲存的全部是物件,每個物件都包含乙個與之對應的 class 的資訊。class 的目的是得到操作指令 2.jvm 只有乙個堆區 heap 被所有執行緒共享,堆中不存放基本型別和物件引用,只存放物件本身。棧區 1.每個執行緒包含乙個棧區,棧中只儲存基礎資料型別的物件和自定義物件的引用...