JVM (一)內存與垃圾回收|JVM概述

本文主要是JVM的總體概述鬼佣。

目錄
?1 基本概念
?2 JVM整體結構
?3 JVM代碼執(zhí)行流程
?4 JVM架構模型
?5 JVM的生命周期

1 基本概念
  • 虛擬機(Virtual Machine)汞贸,就是一臺虛擬的計算機书在。它是一款軟件飒筑,用來執(zhí)行一系列虛擬計算機指令熙揍。
  • 大體上渗稍,虛擬機可分為系統(tǒng)虛擬機(如VMware)和程序虛擬機(如java虛擬機)挑宠。
  • JVM是運行在操作系統(tǒng)之上的,并沒有和硬件有直接的交互.
  • JVM特點:一次編譯郑口,到處運行鸳碧;自動內存管理,自動垃圾回收

跨平臺的語言java和跨語言的平臺jvm
a.一次編譯犬性,到處運行:我們編寫的程序是以.java結尾的源文件瞻离,經過編譯生成字節(jié)碼文件,所有平臺的jvm都遵守jvm的規(guī)范乒裆,故字節(jié)碼文件可以在不同的平臺上解釋運行套利。

java-跨平臺的語言

b.Java虛擬機根本不關心運行在其內部的程序到底是何種編程語言編寫的,它只關心"字節(jié)碼"文件
jvm-跨語言的平臺

不同的JVM體系架構都會有所不同,我的JVM系列文章均圍繞Hotspot 虛擬機來講肉迫。

2 JVM整體結構

JVM的內部體系結構分為三部分验辞,分別是:類裝載器子系統(tǒng),運行時數據區(qū)喊衫,和執(zhí)行引擎跌造。

  • 類裝載器子系統(tǒng):將字節(jié)碼裝載到內存中,生成class對象
  • 運行時數據區(qū):在內存中族购,多線程共享堆和方法區(qū)壳贪,對java虛擬機棧,本地方法棧和程序計數器來說寝杖,每個線程獨有一份违施。
  • 執(zhí)行引擎:分為解釋器、JIT編譯器瑟幕、垃圾回收器醉拓,有將高級語言翻譯成機器語言的作用


    JVM整體結構
3 JVM代碼執(zhí)行流程
  • 先把 Java 代碼編譯成字節(jié)碼,也就是把 .java 類型的文件編譯成 .class 類型的文件收苏。這個過程的大致執(zhí)行流程:Java 源代碼 -> 詞法分析器 -> 語法分析器 -> 語義分析器 -> 字符碼生成器 -> 最終生成字節(jié)碼,其中任何一個節(jié)點執(zhí)行失敗就會造成編譯失敺弑鹿霸;
  • Java 虛擬機使用類加載器(Class Loader)裝載 class 文件;
    類加載完成之后秆乳,會進行字節(jié)碼效驗懦鼠,字節(jié)碼效驗通過之后 JVM 解釋器會把字節(jié)碼翻譯成機器碼交由操作系統(tǒng)執(zhí)行。但不是所有代碼都是解釋執(zhí)行的屹堰,JVM 對此做了優(yōu)化肛冶,比如,以 Hotspot 虛擬機來說扯键,它本身提供了 JIT(Just In Time)也就是我們通常所說的動態(tài)編譯器睦袖,它能夠在運行時將熱點代碼編譯為機器碼。


    java代碼執(zhí)行流程
4 JVM架構模型
  • java編譯器輸入的指令流基本上是一種基于棧的指令架構荣刑,另一種指令架構是基于寄存器的指令架構馅笙。
  • 由于跨平臺的設計,java的指令都是根據棧來設計的厉亏,不同平臺CPU架構不同董习,所以不能設計為基于寄存器的。
    棧:跨平臺性爱只、指令集小皿淋、指令多;執(zhí)行性比寄存器差
    寄存器:指令集架構完全依賴硬件,可移植性差窝趣;性能優(yōu)秀疯暑,執(zhí)行高效
5 JVM的生命周期

①啟動
通過引導類加載器(bootstrap class loader)創(chuàng)建一個初始類(initial class)來完成的,這個類是由虛擬機的具體實現(xiàn)指定的高帖。

② 執(zhí)行

  • 一個運行中的java虛擬機有著一個清晰的任務:執(zhí)行Java程序缰儿;
  • 程序開始執(zhí)行的時候他才運行,程序結束時他就停止散址;
  • 執(zhí)行一個所謂的Java程序的時候乖阵,真真正正在執(zhí)行的是一個叫做Java虛擬機的進程。

③ 退出

  • 程序正常執(zhí)行結束
  • 程序異吃铮或錯誤而異常終止
  • 操作系統(tǒng)錯誤導致終止
  • 某線程調用Runtime類或System類的exit方法瞪浸,或Runtime類的halt方法,并且java安全管理器也允許這次exit或halt操作
  • 除此之外吏祸,JNI規(guī)范描述了用JNI Invocation API來加載或卸載Java虛擬機時对蒲,Java虛擬機的退出情況
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贡翘,隨后出現(xiàn)的幾起案子蹈矮,更是在濱河造成了極大的恐慌,老刑警劉巖鸣驱,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泛鸟,死亡現(xiàn)場離奇詭異,居然都是意外死亡踊东,警方通過查閱死者的電腦和手機北滥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闸翅,“玉大人再芋,你說我怎么就攤上這事〖峒剑” “怎么了济赎?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長记某。 經常有香客問我联喘,道長,這世上最難降的妖魔是什么辙纬? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任豁遭,我火速辦了婚禮,結果婚禮上贺拣,老公的妹妹穿的比我還像新娘蓖谢。我一直安慰自己捂蕴,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布闪幽。 她就那樣靜靜地躺著啥辨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盯腌。 梳的紋絲不亂的頭發(fā)上溉知,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音腕够,去河邊找鬼级乍。 笑死,一個胖子當著我的面吹牛帚湘,可吹牛的內容都是我干的玫荣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼大诸,長吁一口氣:“原來是場噩夢啊……” “哼捅厂!你這毒婦竟也來了?” 一聲冷哼從身側響起资柔,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤焙贷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贿堰,有當地人在樹林里發(fā)現(xiàn)了一具尸體盈厘,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年官边,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片外遇。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡注簿,死狀恐怖,靈堂內的尸體忽然破棺而出跳仿,到底是詐尸還是另有隱情诡渴,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布菲语,位于F島的核電站妄辩,受9級特大地震影響,放射性物質發(fā)生泄漏山上。R本人自食惡果不足惜眼耀,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佩憾。 院中可真熱鬧哮伟,春花似錦、人聲如沸楞黄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碎税。三九已至尤慰,卻和暖如春蚣录,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萎河。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虐杯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓支子,卻偏偏與公主長得像达舒,于是被迫代替她去往敵國和親值朋。 傳聞我的和親對象是個殘疾皇子巩搏,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354