一、概述
在Java中,記憶體分為兩種,一種是堆疊內存,另一種就是堆疊記憶體。
二、堆記憶體
1、什麼是堆記憶體?
堆記憶體是Java記憶體中的一種,它的作用是用來儲存Java中的物件和陣列,當我們new一個物件或是建立一個陣列的時候,就會在堆疊記憶體中開闢一段空間給它,用於存放。
2、堆記憶體的特色是什麼?
第一點:堆其實可以類似的看做是管道,或者說是平時去排隊買票的的情況差不多,所以堆內存的特點就是:先進先出,後進後出,也就是你先排隊,好,你先買票。
第二點:堆可以動態地分配記憶體大小,生存期也不必事先告訴編譯器,因為它是在運行時動態分配記憶體的,但缺點是,由於要在運行時動態分配記憶體,存取速度較慢。
3、new物件在堆中如何分配?
由Java虛擬機器的自動垃圾回收器來管理。
免費影片教學分享:java影片教學
三、堆疊記憶體
1、什麼是堆疊記憶體
堆疊記憶體是Java的另一種內存,主要是用來執行程式用的,例如:基本型別的變數和物件的參考變數。
2、堆疊記憶體的特色
第一點:堆疊記憶體就好像一個礦泉水瓶,像裡面放入東西,那麼先放入的沉入底部,所以它的特徵是:先進後出,後進先出
第二點:存取速度比堆疊要快,僅次於暫存器,堆疊資料可以共享,但缺點是,存在堆疊中的資料大小與生存期必須是確定的,缺乏彈性
3、堆疊記憶體分配機制
#堆疊記憶體可以稱為一級緩存,由垃圾回收器自動回收
4、資料共享
範例:
int a = 3; int b = 3;
第一步處理:
1.編譯器先處理int a = 3;
2.建立變數a的引用
3.在堆疊中查找是否有3這個值
4.沒有找到,將3存放,a指向3
#第二步處理:
1.處理b=3
2.建立變數b的參考
3.找到,直接賦值
第三步驟改變:
#接下來
a = 4;
同上方法
a的值改變,a指向4,b的值是不會改變的。
PS:如果是兩個物件的話,那就不一樣了,物件指向的是同一個引用,一個發生改變,另一個也會改變。
四、堆疊和堆疊的差異
JVM是基於堆疊的虛擬機,JVM為每個新建立的執行緒都分配一個堆疊。也就是說,對一個Java程式來說,它的運作就是透過對堆疊的操作來完成的。堆疊以幀為單位保存執行緒的狀態。 JVM對堆疊只進行兩種操作:以幀為單位的壓棧和出棧操作。
差異點:
1.堆記憶體用來存放由new建立的物件和陣列。
2.堆疊記憶體用來存放方法或局部變數等。
3.堆是先進先出,後進後出。
4.堆疊是後進先出,先進後出。
相同點:
#1.都是屬於Java記憶體的一種。
2.系統都會自動去回收它,但是對於堆記憶體一般開發人員會自動回收它。
更多相關文章教學分享:java零基礎入門
#以上是關於java中堆疊記憶體與堆疊記憶體的詳細分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3漢化版
中文版,非常好用

Dreamweaver Mac版
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境