Jvm內(nèi)存結(jié)構(gòu)及程序運行過程(1)

1. 初識JVM

問題:我們的.java 文件是怎么運行的摩瞎?

解答:我們的.java 文件通過編譯器編譯成.class 文件 毫别,通過我們的ClassLoader 加載器加載到JVM運行時內(nèi)存塊。然后我們的CPU 去運行我們的程序。運行我們的程序是需要計算機里的很多模塊配合的儿普,如CPU ,內(nèi)存掷倔,寄存器 等眉孩。所以,不管是什么語言編寫的程序,只要最終編譯成.class 文件浪汪,那我們的java 虛擬機 就可以運行他巴柿,只要安裝了java 虛擬機,就可以在任何平臺上跑java 的程序死遭,這也是java 強大的原因广恢。以前塞班系統(tǒng)上的應(yīng)用程序就是用我們的java 寫的。

問題:那我們的程序在虛擬機中又是怎么運行的呢殃姓?

解答:java虛擬機 也相當(dāng)于我們的一個平臺袁波,一個宿主。每一個應(yīng)用在java 虛擬機中都是一個獨立的門戶蜗侈。當(dāng)我們的應(yīng)用需要到的程序文件時就會通過我們的ClassLoader 把.class 文件加載到JVM運行時內(nèi)存中篷牌。ClassLoader 怎么加載的我們后續(xù)再解釋。JVM 運行時內(nèi)存大致可以分為五大類:方法區(qū)踏幻,堆區(qū)枷颊,虛擬機棧,本地方法棧该面,程序計數(shù)器夭苗。然而 我們的應(yīng)用不可能都是一個線程,可能是多個線程隔缀。根據(jù)線程資源分配的話分為:線程共享區(qū)(方法區(qū)题造,堆區(qū)) 線程私有區(qū)(虛擬機棧,本地方法棧猾瘸,程序計數(shù)器)界赔。

現(xiàn)在我們分別來介紹一下這5個部分到底有什么作用,我們的程序在這5個功能模塊上是怎么協(xié)調(diào)運行我們的程序的牵触。

  1. 程序計數(shù)器:從字面上的意思可理解成 運行程序的一個標(biāo)記的東西淮悼。 我們的java程序是多線程的,CPU 可以在多個線程中分配時間片揽思。當(dāng)我們的某一個線程被掛起時袜腥,我們的程序計數(shù)器就要記錄當(dāng)前代碼執(zhí)行到了那一行,下一次線程被喚醒時钉汗,程序繼續(xù)從之前運行的那里開始運行羹令。程序計數(shù)器的生命周期和線程是同步的。
  2. 虛擬機棧:說到棧损痰,那就很明顯就是先進后出的特恬。當(dāng)我們運行某一個方法時就會創(chuàng)建一個棧幀,我們運行的方法 會在這個棧幀中去操作徐钠。棧幀中包括局部變量表,操作數(shù)棧役首,動態(tài)連接尝丐,返回地址等显拜。正常我們的程序會編譯成字節(jié)碼指令,會在操作棧中入棧出棧 計算出每個方法的運行結(jié)果爹袁,然后返回远荠,退出方法圃泡。
  3. 本地方法棧:本地方法棧和虛擬機棧大致相同动遭,主要就是執(zhí)行本地方法 native 方法绽慈。JNI開發(fā)過程中會用到本地方法棧昆箕。
  4. 堆:JVM 運行時內(nèi)存管理的最大的一塊內(nèi)存领迈,該區(qū)域是存放我們對象實例具被,所以這塊的內(nèi)存回收和創(chuàng)建 都是非常重要的奔誓,內(nèi)存是有限的琢锋,如果管理不當(dāng)就會導(dǎo)致內(nèi)存不夠用绎秒,不夠用就會出現(xiàn)OOM 浦妄。
  5. 方法區(qū):方法區(qū)主要存儲一些 加載的類的信息 版本號,字段见芹,方法剂娄,接口 ,常量玄呛,靜態(tài)變量阅懦。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市徘铝,隨后出現(xiàn)的幾起案子耳胎,更是在濱河造成了極大的恐慌,老刑警劉巖庭砍,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件场晶,死亡現(xiàn)場離奇詭異,居然都是意外死亡怠缸,警方通過查閱死者的電腦和手機诗轻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揭北,“玉大人扳炬,你說我怎么就攤上這事∩μ澹” “怎么了恨樟?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疚俱。 經(jīng)常有香客問我劝术,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任养晋,我火速辦了婚禮衬吆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绳泉。我一直安慰自己逊抡,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布零酪。 她就那樣靜靜地躺著冒嫡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪四苇。 梳的紋絲不亂的頭發(fā)上孝凌,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音蛔琅,去河邊找鬼胎许。 笑死,一個胖子當(dāng)著我的面吹牛罗售,可吹牛的內(nèi)容都是我干的辜窑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼寨躁,長吁一口氣:“原來是場噩夢啊……” “哼穆碎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起职恳,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤所禀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后放钦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體色徘,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年操禀,在試婚紗的時候發(fā)現(xiàn)自己被綠了褂策。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡颓屑,死狀恐怖斤寂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揪惦,我是刑警寧澤遍搞,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站器腋,受9級特大地震影響溪猿,放射性物質(zhì)發(fā)生泄漏钩杰。R本人自食惡果不足惜诊县,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一翎冲、第九天 我趴在偏房一處隱蔽的房頂上張望抗悍。 院中可真熱鬧缴渊,春花似錦衔沼、人聲如沸昔瞧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽混巧。三九已至咧党,卻和暖如春凿傅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辨液。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工止吁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留敬惦,地道東北人俄删。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像斜脂,于是被迫代替她去往敵國和親帚戳。 傳聞我的和親對象是個殘疾皇子儡首,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容