JVM

1.什么是JVM?

Java文件à字節(jié)碼(.class file)à虛擬機(jī)加載.class文件饥瓷,翻譯成0101碼àjvm在Windows和linux的版本不同(還是平臺(tái)有關(guān)的正林,可移植性有jvm實(shí)現(xiàn))


JVM的功能

-軟件層面的翻譯醉拓,映射了人可以認(rèn)知的代碼蕾总,即class文件到機(jī)器指令

-內(nèi)存管理囤屹,可以讓人專注于業(yè)務(wù)代碼(對(duì)比c++,要申請(qǐng)釋放空間笑跛,java幫我們做了這件事付魔,內(nèi)存管理)


JVM學(xué)習(xí)的必要:

??內(nèi)存管理中內(nèi)存泄露溢出的時(shí)候要了解jvm

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

為什么要講運(yùn)行時(shí)數(shù)據(jù)區(qū):描述了java代碼在運(yùn)行時(shí)的狀態(tài)

分區(qū):數(shù)據(jù) 指令

數(shù)據(jù):方法區(qū)heap

程序計(jì)數(shù)器:當(dāng)前線程正在執(zhí)行的字節(jié)碼的地址 行號(hào)(為什么要記錄下來當(dāng)前指令?因?yàn)镃PU執(zhí)行線程通過時(shí)間片飞蹂,線程可能被搶占掛起几苍,當(dāng)前的指令不一定可以執(zhí)行完成,所以要保存下來)

虛擬機(jī)棧:存儲(chǔ)當(dāng)前線程運(yùn)行方法所需要的指令陈哑,數(shù)據(jù)妻坝,返回地址

???????????????????? 進(jìn)出虛擬機(jī)棧的最小單元叫棧幀(主要是局部變量,操作數(shù)棧惊窖,動(dòng)態(tài)刽宪,出口)

本地方法棧

方法區(qū): 類信息,常量界酒,靜態(tài)變量圣拄,JIT(即時(shí)編譯,動(dòng)態(tài)代理毁欣,動(dòng)態(tài)生成類的時(shí)候會(huì)生成class文件加載到j(luò)vm中)(靜態(tài)變量以及常量為什么存儲(chǔ)在堆中庇谆?)

Heap:內(nèi)存模型JMM

三代(新生代,老年代署辉,永久代)


為什么分為三代族铆?:

Metaspace規(guī)避了永久代會(huì)溢出的問題,可以自己動(dòng)態(tài)擴(kuò)容哭尝。不屬于堆哥攘。它的不足是無限擴(kuò)容,堆外內(nèi)存太大。所以需要對(duì)其進(jìn)行管制逝淹,定義metaspace的大小耕姊。


新生代為什么是8:1:1?新生代里的回收算法是復(fù)制回收算法(把空間分為2塊栅葡,一塊分配空間使用茉兰,另一塊不分配⌒来兀回收時(shí)將無法刪除的放入另一塊规脸,其他的刪除。)實(shí)踐出真知 熊咽,通過統(tǒng)計(jì)學(xué)莫鸭,對(duì)象的生命周期不同,用分代方式分配空間横殴。而98%的對(duì)象被因,在一次minor gc的過程中就會(huì)被回收,不能回收就放到s1衫仑。所以分為811梨与,可以利用的空間就有90%。Eden8M,s01M中一次minor gc后存活的對(duì)象基本都會(huì)被放到s1M文狱。

如果s1放不下粥鞋,分配擔(dān)保,老年代給出空間如贷。

新生代與老年代是1:2


什么樣的對(duì)象應(yīng)當(dāng)被GC陷虎?

-判斷算法:引用計(jì)數(shù)法(循環(huán)引用,A引用B杠袱,B引用A尚猿,計(jì)數(shù)不是0是1,所以jvm沒有使用引用計(jì)數(shù)法)楣富,可達(dá)性分析(GCroot指向A凿掂,A指向B)


如果從GCRoot可以有路徑到達(dá),則不回收纹蝴,若有獨(dú)立的節(jié)點(diǎn)庄萎,如C則,回收塘安。

哪些可以成為GCroot糠涛?


為什么可以成為GCroot?因?yàn)樵贕C的時(shí)候兼犯,線程在運(yùn)行某個(gè)方法忍捡,所有變量都不被回收集漾。而GCRoot本身要求自己不會(huì)被回收,所以可以做GCroot砸脊。

不可達(dá)是不是一定會(huì)被回收具篇?新生代與老年代有交叉。不是凌埂,finalize()可以在下次GC之前進(jìn)行挽救(使用GCroot指向?qū)⒒厥盏墓?jié)點(diǎn))

靜態(tài)變量如何回收驱显?靜態(tài)變量在方法區(qū)。

運(yùn)行方法時(shí)要壓棧瞳抓,(可能調(diào)用多次方法棧)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末埃疫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挨下,更是在濱河造成了極大的恐慌熔恢,老刑警劉巖脐湾,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臭笆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡秤掌,警方通過查閱死者的電腦和手機(jī)愁铺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闻鉴,“玉大人茵乱,你說我怎么就攤上這事∶系海” “怎么了瓶竭?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)渠羞。 經(jīng)常有香客問我斤贰,道長(zhǎng),這世上最難降的妖魔是什么次询? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任荧恍,我火速辦了婚禮,結(jié)果婚禮上屯吊,老公的妹妹穿的比我還像新娘送巡。我一直安慰自己,他們只是感情好盒卸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布骗爆。 她就那樣靜靜地躺著,像睡著了一般蔽介。 火紅的嫁衣襯著肌膚如雪摘投。 梳的紋絲不亂的頭發(fā)上糟需,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音谷朝,去河邊找鬼洲押。 笑死,一個(gè)胖子當(dāng)著我的面吹牛圆凰,可吹牛的內(nèi)容都是我干的杈帐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼专钉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼挑童!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起跃须,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤站叼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后菇民,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尽楔,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年第练,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阔馋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娇掏,死狀恐怖呕寝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情婴梧,我是刑警寧澤下梢,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站塞蹭,受9級(jí)特大地震影響孽江,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浮还,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一竟坛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钧舌,春花似錦担汤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撞牢,卻和暖如春率碾,著一層夾襖步出監(jiān)牢的瞬間叔营,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工所宰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绒尊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓仔粥,卻偏偏與公主長(zhǎng)得像婴谱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子躯泰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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

  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡(luò)上收集的一些資料的整理谭羔,因此不免有一些不準(zhǔn)確的地方,同時(shí)不同JDK版本的...
    高廣超閱讀 15,608評(píng)論 3 83
  • jvm原理 Java虛擬機(jī)是整個(gè)java平臺(tái)的基石,是java技術(shù)實(shí)現(xiàn)硬件無關(guān)和操作系統(tǒng)無關(guān)的關(guān)鍵環(huán)節(jié)诵竭,是java...
    AI喬治閱讀 17,246評(píng)論 21 486
  • 1 CPU和內(nèi)存的交互 了解jvm內(nèi)存模型前话告,了解下cpu和計(jì)算機(jī)內(nèi)存的交互情況⌒闫玻【因?yàn)镴ava虛擬機(jī)內(nèi)存模型定義...
    Garwer閱讀 367,429評(píng)論 54 549
  • JVM架構(gòu) 當(dāng)一個(gè)程序啟動(dòng)之前超棺,它的class會(huì)被類裝載器裝入方法區(qū)(Permanent區(qū)),執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,666評(píng)論 0 7
  • 《靈山》臺(tái)灣書店請(qǐng)人購(gòu)
    汪汪_00a1閱讀 92評(píng)論 0 0