JVM - 基礎邏輯

該篇博客是 對於我理解JVM 的線索,並未達到供讀者觀看程度。
下面圖片 之前是我畫圖做的,這次遷移過來,方便自己閱讀。

在這裏插入圖片描述

在這裏插入圖片描述

1. GC堆

1. java 虛擬機所管理的內存中最大的一塊。
	2. java 堆是被所有線程共享的一塊內存區域	
	3. 唯一目的:存放內存實例對象,幾乎所有的對象實例都在這裏分配。
	4. tips:所有的對象分配在堆上面 並不是很絕對。
		 1. jit 編譯器 
		 2. 逃逸分析
		 3. 棧上分配
		 4. 標量替換

2.方法區

	這個區域的內存回收目標 主要是針對常量池的回收和對類型的卸載。
	回收的條件很苛刻。

3.常量池

	常量池 並不是只有編譯器才能產生,運行器也能將新的常亮放入池中。
   常量池 無法申請內存會拋出outofMemoryError  異常

在這裏插入圖片描述

JAVA 虛擬機棧

 1. 線程私有
    2. 描述的是JAVA方法執行的內存模型
    
兩種異常
  	 線程請求的棧深度大於虛擬機鎖運行的深度,將拋 stackOverFlowError
  	 動態擴展 無法申請到足夠的內存,outOfMemoryError
    創建方法說明:
	 	每個方法從調用直至執行完成的過程,就對應一個棧幀在虛擬機中入棧到出棧過程.
	 	說明:堆棧中的棧  指的是虛擬機棧  或者說是虛擬機中局部變量表部分。	
	 	
對象引用:
  Reference  它不等同於對象本身,可能是一個指向對象起始地址的引用指針

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章