JVM串講(五分鐘熟悉jvm)

? ? ? 本文乃個人感悟總結,希望對大家有所幫助九火,宗旨為初學者快速了解jvm稼稿,為有jvm基礎者更好的復習回憶。后期還會出其他文集敬請期待者吁。



? ? ? ? 一個程序的運行離不開JVM窘俺,所以我們從JVM的啟動開始講起,JVM是如何啟動的呢复凳,首先自然是裝載配置(根據(jù)當前路徑和系統(tǒng)版本找到JVM.cfg),然后根據(jù)配置文件尋找JVM.dll(jvm.dll是動態(tài)資源鏈接庫瘤泪,說白了就是JVM的主要實現(xiàn))灶泵,接著就是根據(jù)dll初始化JVM獲得JNIEvement接口(findclass等操作就是通過這個接口實現(xiàn)的,要實現(xiàn)混合編程也少不了這個接口对途,什么是混合編程赦邻,實際開發(fā)過程中單一的Java語言可能滿足不了我們的需求,這個時候我們可以使用其他的編程語言实檀,只要其他編程語言的編譯結果是一個有效的字節(jié)碼文件惶洲,JVM就能有效的支持這種語言,使得Java能夠與其他語言進行混合編程)劲妙,最后找到main方法并運行湃鹊,我們的JVM就啟動了儒喊。JVM啟動后我們就接著講講一個程序是如何通過jvm運行的整個流程镣奋,程序是源碼,所以首先我們要將源碼通過前端編譯器javac編譯成字節(jié)碼文件(這個過程包括詞法分析語法分析語義分析最后編譯成class文件)怀愧,然后jvm通過類加載器將字節(jié)碼文件從本地或者網(wǎng)絡傳輸加載到內(nèi)存(加載的過程為:加載侨颈,驗證,準備芯义,解析哈垢,初始化,最終形成jvm直接使用的Java類型扛拨。同時加載器類型分又為啟動類加載器耘分,擴展類加載器,應用程序類加載器绑警,自定義類加載器求泰。它們自上往下查找類是否被加載,自下往上加載類计盒,根據(jù)雙親委派模型頂層類加載器不能加載底層類加載器的對象)渴频,加載到內(nèi)存后字節(jié)碼的通過JVM的JIT(即時編譯器,分為兩種北启,client compare和server compare 簡稱C1和C2)來將字節(jié)碼編譯成機器指令最后由jvm執(zhí)行引擎來執(zhí)行卜朗。說到我們的class文件被加載到內(nèi)存,我們就不得不說一下JVM的內(nèi)存空間了咕村,jvm的內(nèi)存空間分為方法區(qū)场钉、堆、棧懈涛、本地方法棧(方法區(qū)保存裝載的類信息逛万,常量池,靜態(tài)數(shù)據(jù)等肩钠,同時被所有線程共享泣港。堆保存類對象暂殖,線程共享。棧存放方法的局部變量当纱,基本操作數(shù)棧呛每,常量池指針,線程私有)坡氯,而堆進一步細分的話晨横,又分為新生代(Eden空間,幸存空間(From Survivor空間和To Survivor空間))和老年代箫柳,而且堆是gc的主要工作空間手形。所以接下來我們講講這個GC了,GC是用來垃圾收集管理內(nèi)存的悯恍,它如何對垃圾進行收集呢库糠,gc內(nèi)部提供四種垃圾回收的算法(引用計數(shù)法、標記清除法涮毫、標記壓縮法瞬欧、復制法)。最后我們談談如何優(yōu)化jvm罢防,最牛逼的就是根據(jù)項目的情況重寫一個jvm啦艘虎,例如taobaoVM,或者使用命令行(jps咒吐、jstat野建、jmap、jhat恬叹、jstack候生、jinfo等)查看內(nèi)存各個區(qū)域的占用情況設置參數(shù)(-Xmm、-Xms妄呕、-Xmn陶舞、newRatio等)來優(yōu)化jvm。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绪励,一起剝皮案震驚了整個濱河市肿孵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疏魏,老刑警劉巖停做,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異大莫,居然都是意外死亡休雌,警方通過查閱死者的電腦和手機纳账,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門功咒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孙技,“玉大人胚宦,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵钠右,是天一觀的道長。 經(jīng)常有香客問我忘蟹,道長飒房,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任媚值,我火速辦了婚禮狠毯,結果婚禮上,老公的妹妹穿的比我還像新娘褥芒。我一直安慰自己嚼松,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布喂很。 她就那樣靜靜地躺著惜颇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪少辣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天羡蛾,我揣著相機與錄音漓帅,去河邊找鬼。 笑死痴怨,一個胖子當著我的面吹牛忙干,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浪藻,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼捐迫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了爱葵?” 一聲冷哼從身側響起施戴,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎萌丈,沒想到半個月后赞哗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辆雾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年肪笋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡藤乙,死狀恐怖猜揪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坛梁,我是刑警寧澤湿右,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站罚勾,受9級特大地震影響毅人,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尖殃,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一丈莺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧送丰,春花似錦缔俄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至登失,卻和暖如春遏佣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背揽浙。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工状婶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人馅巷。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓膛虫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钓猬。 傳聞我的和親對象是個殘疾皇子稍刀,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

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

  • 從三月份找實習到現(xiàn)在,面了一些公司敞曹,掛了不少账月,但最終還是拿到小米、百度异雁、阿里捶障、京東、新浪纲刀、CVTE项炼、樂視家的研發(fā)崗...
    時芥藍閱讀 42,218評論 11 349
  • 介紹JVM中7個區(qū)域担平,然后把每個區(qū)域可能造成內(nèi)存的溢出的情況說明 程序計數(shù)器:看做當前線程所執(zhí)行的字節(jié)碼行號指示器...
    jemmm閱讀 2,227評論 0 9
  • 2016夏季成都國際珠寶首飾展 展會時間:2016年8月12日---8月15日 (周五至周一共4天) 舉辦展館:成...
    寶之林文玩閱讀 314評論 0 0
  • 沈先生家有一盆虎耳草暂论,種在一個橢圓形的小小的鈞窯盆里。很多人不認識這種草拌禾。這就是《邊城》里翠翠在夢里采摘的那種草取胎,...
    不良公子閱讀 531評論 17 9
  • 在這一個月中,讓我最受益的就是合理的有計劃的做好每一件事湃窍。在以前闻蛀,可能就是因為自己沒有合理的計劃好事情,導致會遇到...
    王朋彥閱讀 636評論 0 0