JVM執(zhí)行的分析

Java運(yùn)行流程

實(shí)際上當(dāng)JVM將所需要的.class文件加載到JVM進(jìn)程之中署恍,那么這個(gè)過程就需要有一個(gè)類加載器(ClassLoader)庞钢,有了類加載器的好處在于:可以隨意指定程序.class文件的所在路徑寸谜。

JVM:Java虛擬機(jī),所有的程序都要求運(yùn)行在JVM上,是因?yàn)榭紤]到了可移植性問題幌绍,可是如果要想真正去執(zhí)行程序修械,你絕對(duì)不可能離開操作系統(tǒng)的支持趾牧。在Java里面可以使用native實(shí)現(xiàn)本地C函數(shù)的調(diào)用。但是這些都屬于程序運(yùn)行的輔助手段肯污,而真正的程序運(yùn)行都在“運(yùn)行時(shí)數(shù)據(jù)區(qū)”之中

運(yùn)行時(shí)數(shù)據(jù)區(qū)

在整個(gè)的運(yùn)行時(shí)數(shù)據(jù)區(qū)之中翘单,分為如下幾塊內(nèi)存空間:

  • 堆內(nèi)存:保存所有引用數(shù)據(jù)類型的真實(shí)信息;

  • 棧內(nèi)存:基本類型蹦渣、運(yùn)算哄芜、指向堆內(nèi)存的指針;

  • 方法區(qū):所有定義的方法的信息都保存在方法區(qū)之中柬唯,此區(qū)屬于共享區(qū)认臊;


  • 程序計(jì)數(shù)器:
    是一個(gè)非常小的內(nèi)存空間,小的可以忽略锄奢;
  • 本地方法棧:
    每一次執(zhí)行遞歸的方法處理的時(shí)候?qū)嶋H上都會(huì)將上一個(gè)方法入棧美尸;

在整個(gè)Java之中存在有對(duì)象池的概念,對(duì)象池是對(duì)整個(gè)常量池的一個(gè)規(guī)則破壞斟薇,因?yàn)樵贘VM啟動(dòng)的時(shí)候所有的常量都已經(jīng)分配好內(nèi)存空間了师坎,但是String中的intern()方法卻可以打破這種限制,動(dòng)態(tài)的進(jìn)行常量池的內(nèi)容設(shè)置

對(duì)象訪問模式

Java的引用類型是最為重要的數(shù)據(jù)處理模型堪滨,而整個(gè)的引用數(shù)據(jù)類型數(shù)據(jù)處理之中會(huì)牽扯到:堆內(nèi)存胯陋、棧內(nèi)存、方法區(qū)。

所以下面以一個(gè)最簡(jiǎn)單的程序代碼為主:

“Object obj = new Object()”

實(shí)例化了一個(gè)Object類對(duì)象:

  • “Object obj”:描述的是保存在棧內(nèi)存之中遏乔,而保存有堆內(nèi)存的引用义矛,這個(gè)數(shù)據(jù)會(huì)保存在本地變量表中;

  • “new Object()”:一個(gè)真正的對(duì)象盟萨,對(duì)象保存在堆內(nèi)存之中凉翻。直觀的思路整個(gè)引用的操作:

  • 新定義的對(duì)象的名稱保存在本地變量表,而后在這塊區(qū)域里面需要確定要與之對(duì)應(yīng)的棧內(nèi)存空間

  • 通過變量表中的棧地址可以找到堆內(nèi)存

  • 利用堆內(nèi)存的對(duì)象進(jìn)行本地方法的調(diào)用(方法區(qū))

對(duì)于所有引用數(shù)據(jù)類型的訪問實(shí)際上是存在有兩種模式的

  • 通過句柄訪問


  • 通過直接指針訪問

但是在Java之中它直接利用的是對(duì)象保存模式捻激,也就是說堆內(nèi)存里面不再需要保存句柄制轰,而直接保存具體的對(duì)象。就相當(dāng)于省略了句柄到對(duì)象間的查找胞谭。而后這個(gè)對(duì)象可以直接進(jìn)行Java方法區(qū)的調(diào)用垃杖。

總結(jié):引用數(shù)據(jù)類型在HotSpot中都是直接進(jìn)行的引用處理,沒有句柄池的概念丈屹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末调俘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子旺垒,更是在濱河造成了極大的恐慌彩库,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件先蒋,死亡現(xiàn)場(chǎng)離奇詭異侧巨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鞭达,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來皇忿,“玉大人畴蹭,你說我怎么就攤上這事△⑺福” “怎么了叨襟?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)幔荒。 經(jīng)常有香客問我糊闽,道長(zhǎng),這世上最難降的妖魔是什么爹梁? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任右犹,我火速辦了婚禮,結(jié)果婚禮上姚垃,老公的妹妹穿的比我還像新娘念链。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布掂墓。 她就那樣靜靜地躺著谦纱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪君编。 梳的紋絲不亂的頭發(fā)上跨嘉,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音吃嘿,去河邊找鬼祠乃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛唠椭,可吹牛的內(nèi)容都是我干的跳纳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼贪嫂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼寺庄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起力崇,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤斗塘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后亮靴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馍盟,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年茧吊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贞岭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搓侄,死狀恐怖瞄桨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情讶踪,我是刑警寧澤芯侥,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站乳讥,受9級(jí)特大地震影響柱查,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜云石,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一唉工、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汹忠,春花似錦酵紫、人聲如沸告嘲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橄唬。三九已至,卻和暖如春参歹,著一層夾襖步出監(jiān)牢的瞬間仰楚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工犬庇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留僧界,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓臭挽,卻偏偏與公主長(zhǎng)得像捂襟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子欢峰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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