一、棧的特點:
1、棧描述的是方法執行的記憶體模型。
每個方法被呼叫都會建立乙個棧幀(儲存區域性變數、運算元、方法出入口等);
2、jvm為每個執行緒建立乙個棧,用於存放該執行緒執行方法的資訊(實際引數、區域性變數等);
3、棧屬於執行緒私有,不能實現執行緒間的共享;
4、棧的儲存特性是「先進後出,後進先出」;
5、棧是由系統自動分配的,速度快;
6、棧是乙個連續的記憶體空間。
執行緒:啟動乙個程式時,該程式會包含啟動多個執行緒,為每個執行緒建立乙個棧
二、堆的特點:
1、堆(heap)用於儲存建立好的物件和陣列(陣列也是物件);
2、jvm只有乙個堆,被所有執行緒共享;
3、堆是乙個不連續的記憶體空間、分配靈活、速度慢.。
三、方法區的特點:
1、jvm只有乙個方法區,被所有執行緒共享;
2、方法區實際也是堆,只用於儲存類、常量相關的資訊;
3、用來存放程式中永遠不變或唯一的內容(類資訊【class物件】、靜態變數、字串常量等)。
四、圖示:
2、再查詢類裡面的main方法並執行main方法,在棧中建立乙個棧幀,建立乙個方法stu=null;
3、在執行student st = new student()語句後,在堆中新建出乙個物件,裡面有屬性有方法;
4、執行「 = 」賦值符號,堆中的每個記憶體塊都有乙個位址,將st物件的位址賦值給棧幀中的st方法。
java虛擬機器基礎概念
object obj new object softreferencesoftref new softreference obj 使用 softref.get 獲取軟引用所引用的物件 object objg softref.get 則為軟引用。用來描述一些還有用單並非必須的物件。軟引用關聯著的物件,...
虛擬機器的記憶體溢位與記憶體洩漏
會造成記憶體溢位的原因 記憶體溢位 out of memory,是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory 比如申請了乙個integer,但給它存了long才能存下的數,那就是記憶體溢位。記憶體洩露 memory leak,是指程式在申請記憶體後,無法釋放已...
深入理解Java虛擬機器 JVM記憶體洩漏
jvm記憶體洩漏 記憶體洩漏就是存在一些物件沒有被 這些物件是可達的,但是這些物件是無用的,那麼這些物件就存在記憶體洩漏,即不會被gc 但是卻占用記憶體。記憶體溢位主要分為以下幾種 1.靜態集合類引起記憶體洩漏 像hashmap vector等的使用最容易出現記憶體洩露,這些靜態變數的生命週期和應用...