java 虛擬機(jī)(JVM)相關(guān)概念

JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫奈搜,JVM是一種用于計(jì)算設(shè)備的規(guī)范懊悯,它是一個(gè)虛構(gòu)出來的計(jì)算機(jī)幽勒,是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的桨昙。

Java語(yǔ)言的一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無(wú)關(guān)性骡楼。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵扎拣。一般的高級(jí)語(yǔ)言如果要在不同的平臺(tái)上運(yùn)行赴肚,至少需要編譯成不同的目標(biāo)代碼素跺。而引入Java語(yǔ)言虛擬機(jī)后,Java語(yǔ)言在不同平臺(tái)上運(yùn)行時(shí)不需要重新編譯誉券。Java語(yǔ)言使用Java虛擬機(jī)屏蔽了與具體平臺(tái)相關(guān)的信息指厌,使得Java語(yǔ)言編譯程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行踊跟。Java虛擬機(jī)在執(zhí)行字節(jié)碼時(shí)踩验,把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。這就是Java的能夠"一次編譯商玫,到處運(yùn)行"的原因箕憾。

JVM是java的核心和基礎(chǔ),在java編譯器和os平臺(tái)之間的虛擬處理器拳昌。它是一種基于下層的操作系統(tǒng)和硬件平臺(tái)并利用軟件方法來實(shí)現(xiàn)的抽象的計(jì)算機(jī)袭异,可以在上面執(zhí)行java的字節(jié)碼程序。

Android的虛擬機(jī)是根據(jù)移動(dòng)設(shè)備的特點(diǎn)基于Java虛擬機(jī)(JVM)改進(jìn)而來炬藤,雖然沒有保留規(guī)范御铃,但作為Java語(yǔ)言的使用者,了解一下JVM的規(guī)范還是有必要的沈矿。

VM在執(zhí)行Java程序時(shí)上真,會(huì)把它管理的內(nèi)存劃分為若干個(gè)的區(qū)域,每個(gè)區(qū)域都有自己的用途和創(chuàng)建銷毀時(shí)間羹膳。如下圖所示睡互,可以分為兩大部分,線程私有區(qū)和共享區(qū):

線程私有區(qū)

程序計(jì)數(shù)器溜徙。當(dāng)同時(shí)進(jìn)行的線程數(shù)超過CPU數(shù)或其內(nèi)核數(shù)時(shí)湃缎,就要通過時(shí)間片輪詢分派CPU的時(shí)間資源,不免發(fā)生線程切換蠢壹。這時(shí)嗓违,每個(gè)線程就需要一個(gè)屬于自己的計(jì)數(shù)器來記錄下一條要運(yùn)行的指令。如果將是Java方法图贸,則記錄執(zhí)行的字節(jié)碼地址蹂季;是本地方法,則計(jì)數(shù)器為空疏日。

虛擬機(jī)棧偿洁,與線程同時(shí)創(chuàng)建。每個(gè)方法執(zhí)行時(shí)都會(huì)創(chuàng)建一個(gè)棧幀來存儲(chǔ)方法的信息沟优,新調(diào)用的方法入棧涕滋,返回的出棧,所以棧的大小決定方法調(diào)用的可達(dá)深度挠阁。若需要的棧深度大于可用深度時(shí)宾肺,則StackOverflowError溯饵;若棧進(jìn)行擴(kuò)展,但內(nèi)存不夠時(shí)锨用,OutOfMemoryError丰刊。

本地方法棧,與虛擬機(jī)棧作用相似增拥。但它不是為Java方法服務(wù)的啄巧,而是本地方法(C語(yǔ)言)。由于規(guī)范對(duì)這塊沒有強(qiáng)制要求掌栅,不同虛擬機(jī)實(shí)現(xiàn)方法不同秩仆。

2.2.線程共享區(qū)

此區(qū)域是用來存儲(chǔ)被各線程共享的數(shù)據(jù)的。

方法區(qū)猾封,用于存放加載類的元數(shù)據(jù)信息逗概,如常量、靜態(tài)變量和即時(shí)編譯器編譯后的代碼忘衍。若要分代,算是永久代卿城,以前類大多“static”的枚钓,很少被卸載或收集,現(xiàn)回收廢棄常量和無(wú)用的類瑟押。其中運(yùn)行時(shí)常量池存放編譯生成的各種常量搀捷。

堆,存放對(duì)象實(shí)例和數(shù)組多望,是垃圾回收的主要區(qū)域嫩舟,分為新生代和老年代。剛創(chuàng)建的對(duì)象在新生代的Eden區(qū)中怀偷,經(jīng)過GC后進(jìn)入新生代的S0區(qū)中家厌,再經(jīng)過GC進(jìn)入新生代的S1區(qū)中,15次GC后仍存在就進(jìn)入老年代椎工。這是按照一種回收機(jī)制進(jìn)行劃分的饭于,不是固定的。若堆的空間不夠?qū)嵗峙湮桑瑒tOutOfMemoryError掰吕。

棧是運(yùn)行時(shí)單位,代表著邏輯颅痊,內(nèi)含基本數(shù)據(jù)類型和堆中對(duì)象引用殖熟,所在區(qū)域連續(xù),沒有碎片斑响;堆是存儲(chǔ)單位菱属,代表著數(shù)據(jù)钳榨,可被多個(gè)棧共享(包括成員中基本數(shù)據(jù)類型、引用和引用對(duì)象)照皆,所在區(qū)域不連續(xù)重绷,會(huì)有碎片。

JVM內(nèi)存結(jié)構(gòu)主要有三大塊:堆內(nèi)存膜毁、方法區(qū)和棧昭卓。堆內(nèi)存是JVM中最大的一塊由年輕代和老年代組成,而年輕代內(nèi)存又被分成三部分瘟滨,Eden空間候醒、FromSurvivor空間、To Survivor空間,默認(rèn)情況下年輕代按照8:1:1的比例來分配杂瘸;

方法區(qū)存儲(chǔ)類信息倒淫、常量、靜態(tài)變量等數(shù)據(jù)败玉,是線程共享的區(qū)域敌土,為與Java堆區(qū)分,方法區(qū)還有一個(gè)別名Non-Heap(非堆)运翼;棧又分為java虛擬機(jī)棧和本地方法棧主要用于方法的執(zhí)行返干。

這里有一些java 大數(shù)據(jù)的視頻為大家分享,喜歡學(xué)習(xí)的進(jìn)群102205078

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末血淌,一起剝皮案震驚了整個(gè)濱河市矩欠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悠夯,老刑警劉巖癌淮,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異沦补,居然都是意外死亡乳蓄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門夕膀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栓袖,“玉大人,你說我怎么就攤上這事店诗」危” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵庞瘸,是天一觀的道長(zhǎng)捧弃。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么违霞? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任嘴办,我火速辦了婚禮,結(jié)果婚禮上买鸽,老公的妹妹穿的比我還像新娘涧郊。我一直安慰自己,他們只是感情好眼五,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布妆艘。 她就那樣靜靜地躺著,像睡著了一般看幼。 火紅的嫁衣襯著肌膚如雪批旺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天诵姜,我揣著相機(jī)與錄音汽煮,去河邊找鬼。 笑死棚唆,一個(gè)胖子當(dāng)著我的面吹牛暇赤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宵凌,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼翎卓,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了摆寄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坯门,失蹤者是張志新(化名)和其女友劉穎微饥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體古戴,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欠橘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了现恼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肃续。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叉袍,靈堂內(nèi)的尸體忽然破棺而出始锚,到底是詐尸還是另有隱情,我是刑警寧澤喳逛,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布瞧捌,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏姐呐。R本人自食惡果不足惜殿怜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望曙砂。 院中可真熱鬧头谜,春花似錦、人聲如沸鸠澈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)款侵。三九已至末荐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間新锈,已是汗流浹背甲脏。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妹笆,地道東北人块请。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拳缠,于是被迫代替她去往敵國(guó)和親墩新。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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

  • JVM內(nèi)存模型Java虛擬機(jī)(Java Virtual Machine=JVM)的內(nèi)存空間分為五個(gè)部分窟坐,分別是: ...
    光劍書架上的書閱讀 2,493評(píng)論 2 26
  • 《深入理解Java虛擬機(jī)》筆記_第一遍 先取看完這本書(JVM)后必須掌握的部分海渊。 第一部分 走近 Java 從傳...
    xiaogmail閱讀 5,069評(píng)論 1 34
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司哲鸳,掛了不少臣疑,但最終還是拿到小米、百度徙菠、阿里讯沈、京東、新浪婿奔、CVTE缺狠、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,213評(píng)論 11 349
  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡(luò)上收集的一些資料的整理,因此不免有一些不準(zhǔn)確的地方萍摊,同時(shí)不同JDK版本的...
    高廣超閱讀 15,565評(píng)論 3 83
  • 魚游萬(wàn)千迷人眼挤茄,魚樂所及可思蜀? 人魚入海波瀲滟冰木,靜水流深不見汝驮樊。 戀戀不舍人歸去,你追我往依如故。 注釋:游太平...
    浮生夢(mèng)中夢(mèng)閱讀 141評(píng)論 0 1