當前位置:
首頁 > 最新 > Java核心知識點-JVM結構和工作方式

Java核心知識點-JVM結構和工作方式

一、JVM體系結構

1.1 JVM中主要包括(PC寄存器,棧,)(堆,方法區,)本地方法區

一個Java線程中,包括PC寄存器(保存當前執行的指令位置),和棧幀(一個方法對應一個棧幀),本地變數(保存計算中的臨時數據),當一個線程結束後,線程內所有數據就自動銷毀,不需要垃圾回收。

PC寄存器和棧

將1壓入棧中,將2壓入棧中,將1,2彈出計算1+2,將3壓入棧頂,OVER。

方法區:

方法區是堆的一部分,就是java的永久區PermGen。

本地方法區

本地方法區是為了JVM運行native方法(c/c++等語言寫的方法)準備的區。

1.2 內存分配方式:

靜態內存分配:

在編譯時確定需要的內存空間,當程序載入時系統把內存一次性分配給它。靜態內存分配是在java棧上分配的,當方法結束時對應的棧幀也就撤銷,所以分配的內存空間就被回收。

public void staticData(int arg){//int類型佔4個位元組

String s="haha";//引用類型佔4個位元組,(常量池中)

long l=1.00;//long佔8個位元組

Long lg=1L;//原生類型,這裡是引用引用佔4個位元組(常量池中)

Object o=new Object();//(堆中)

}

上面一段代碼會佔用內存空間4+4+8+4+4=24。

動態內存分配:

程序執行的時候才知道要分配的內存大小,當對象創建的時候,在堆上給對象分配一塊空間,空間回收時間不定,由JVM垃圾回收器管理。

1.3 垃圾回收演算法

新創建的對象會分配到Young的Eden上,如果Eden滿了就觸發MinorGC,將Eden區中存活的對象保存到Survivor的一個區中,同時將Survivor另一個區存活的對象也保存到Survivor這個區中,Survivor區始終有一個區是空的。

survivor的一個區滿了之後,會將對象直接放到Old區,Old區滿了會觸發FullGC,將回收整個堆空間。

perm區主要保存class對象,垃圾回收也是FullGC觸發


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 java學習吧 的精彩文章:

JAVA封裝
用這幾招大大的提高了 編程的效率!
java基礎語法
開發維護大型 Java 項目的建議
有點基礎的初級java 要掌握的知識

TAG:java學習吧 |

您可能感興趣

JSP的 結構
結構設計 + OW 配色!Nike Blazer Rebel Mid 新品登場
多份專利公布 一窺Magic Leap One內部結構和工作原理
多份專利公布,一窺Magic Leap One內部結構和工作原理
windows下安裝HMMER軟體進行結構域模式掃描
Redis-BitMap 「數據結構」可以實現對位的操作
從結構到性能,概述XGBoost、Light GBM和CatBoost的同與不同
研究揭示亞細胞核結構nuclear speckle在mRNA出核中的功能與機制
可提取結構化信息的自然語言理解 Python庫Snips NLU
從結構到性能,一文概述XGBoost、Light GBM和CatBoost的同與不同
Swift 結構體
書單推薦包裝設計包裝的結構藝術II Structural Packaging Art
TensorFlow結構分析及自定義Op
校園公共建築設計:法國吉索爾Louise Michel and Louis Aragon 活動中心/鋼結構
Jenkins—Jenkins主目錄結構介紹
淺析Myobrace的結構與功能作用的關係
ES6的Set和Map數據結構,由你製造
Redis 數據結構詳解
ViewController的層級結構
Classical CNN models:LeNet-5 模型結構詳解