jvm

一歌懒、jvm是什么?

jvm:Java Virtual Machine及皂,Java虛擬機(jī)
JVM是JRE的一部分躲庄。它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的噪窘。JVM有自己完善的硬件架構(gòu),如處理器倔监、堆棧浩习、寄存器等,還具有相應(yīng)的指令系統(tǒng)谱秽。Java語言最重要的特點(diǎn)就是跨平臺(tái)運(yùn)行疟赊。使用JVM就是為了支持與操作系統(tǒng)無關(guān),實(shí)現(xiàn)跨平臺(tái)驮审。所以,JAVA虛擬機(jī)JVM是屬于JRE的地来,而現(xiàn)在我們安裝JDK時(shí)也附帶安裝了JRE(當(dāng)然也可以單獨(dú)安裝JRE)

二熙掺、jvm包括哪些東西?

image.png

java是運(yùn)行在java虛擬機(jī)中(jvm)颂碧,首先我們寫的.java文件會(huì)編譯成 .class字節(jié)碼文件类浪,然后通過類加載器將這些文件加載到j(luò)vm中费就;

類加載器(classLoad)與雙親委派機(jī)制
  1. jvm提供了三層classLoader:(這些加載器并不是父子關(guān)系)
    (1)啟動(dòng)類(根)加載器 :bootstrap ClassLoader :主要是負(fù)責(zé)加載核心的類庫(java.lang.*等),構(gòu)造ExtClassLoader和AppClassLoader;
    (2)ExtClassLoader: 擴(kuò)展類加載器: 主要負(fù)責(zé) jre/lib/ext/目錄下的一些擴(kuò)展jar;
    (3) AppClassLoader: 加載應(yīng)用程序的主函數(shù)睬澡;

  2. 雙親委派機(jī)制
    (1)當(dāng)一個(gè)Hello.class這樣的文件要被加載時(shí)眠蚂。不考慮我們自定義類加載器,首先會(huì)在AppClassLoader中檢查是否加載過昔脯,如果有那就無需再加載了笛臣。如果沒有,那么會(huì)拿到父加載器静陈,然后調(diào)用父加載器的loadClass方法诞丽。父類中同理也會(huì)先檢查自己是否已經(jīng)加載過率拒,如果沒有再往上。注意這個(gè)類似遞歸的過程,直到到達(dá)Bootstrap classLoader之前,都是在檢查是否加載過谒所,并不會(huì)選擇自己去加載沛申。直到BootstrapClassLoader,已經(jīng)沒有父加載器了尖淘,這時(shí)候開始考慮自己是否能加載了著觉,如果自己無法加載,會(huì)下沉到子加載器去加載趁桃,一直到最底層肄鸽,如果沒有任何加載器能加載典徘,就會(huì)拋出ClassNotFoundException。
    (2)那么為什么要有這種機(jī)制呢逮诲?
    答:其實(shí)是為了防止篡改系統(tǒng)級(jí)別的類汛骂,比如 想要篡改 java.lang.String ,這個(gè)類,那么加載的時(shí)候 首先就會(huì)被 啟動(dòng)類加載器加載淑掌,在一定意義上保證了安全

運(yùn)行時(shí)數(shù)據(jù)(jvm)包括哪些蝶念?

(1) 方法區(qū):存放所有字段 和方法字節(jié)碼以及一些 特殊方法如構(gòu)造函數(shù) 媒殉,接口代碼; 靜態(tài)變量全封、常量、類模板信息(靜態(tài)屬性刹悴,參數(shù)土匀,構(gòu)造方法等)、運(yùn)行時(shí)字符串就轧,也就是常量池妒御;線程共享
(2)棧:一個(gè)線程一個(gè)棧,先進(jìn)后出琢歇,線程結(jié)束就釋放梦鉴;保存基礎(chǔ)數(shù)據(jù)類型的值和對(duì)象以及基礎(chǔ)數(shù)據(jù)的引用;棧分為3個(gè)部分:基本類型變量區(qū)魄宏、執(zhí)行環(huán)境上下文宠互、操作指令區(qū)(存放操作指令)椭坚。
(3)本地方法棧:同棧差不多,也是每執(zhí)行一個(gè)方法善茎,建立一個(gè)棧幀券册,是為執(zhí)行native方法所服務(wù)的,native方法是去調(diào)用底層c語言的庫垂涯;
(4)程序計(jì)數(shù)器 :是一個(gè)記錄著當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器烁焙;
(5)堆:存放的是對(duì)象的地址

堆的組成

  • jdk1.6: 包括新生代、老年代耕赘、永久代
  • jdk1.7: 包括新生代骄蝇、老年代、永久代操骡,但是永久代慢慢消失九火,方法區(qū)是存在永久代
  • jdk1.8 :包括新生代赚窃、老年代、元空間考榨,方法區(qū)是放在元空間跨细,其實(shí)元空間和堆是分開的鹦倚,但是他們共享物理內(nèi)存,所以有時(shí)候也說堆包含元空間冀惭;
    (1). 98%的對(duì)象是在新生區(qū)死亡的其中新生代又包括 伊甸園區(qū)(eden)震叙、from、to 散休;這樣做的好處是沒有內(nèi)存的碎片媒楼,幻術(shù)師 浪費(fèi)了內(nèi)存空間,多了一半空間永遠(yuǎn)是空戚丸;當(dāng)伊甸園區(qū)滿了之后划址,會(huì)進(jìn)行輕GC將遺留下來的對(duì)象放入from,當(dāng)from滿了之后,會(huì)放入to區(qū),這時(shí)候限府,to區(qū)變成from區(qū)夺颤,from區(qū)變成to區(qū),這樣反復(fù)之后當(dāng)新生區(qū)滿了之后胁勺,會(huì)進(jìn)行重GC(full GC) 將存活的對(duì)象放入老年代世澜;
    (2). 持久代存放的是老年代活下來的對(duì)象,它放的是方法區(qū)和常量池署穗,存放靜態(tài)變量寥裂、常量、類信息案疲、運(yùn)行時(shí)的常量池封恰;
    (3) 當(dāng)一個(gè)對(duì)象經(jīng)歷15次gc還沒死,就會(huì)進(jìn)入老年代褐啡;
-XX: -XX:MaxTenuring Threshold=999  //設(shè)置進(jìn)入老年代的時(shí)間

oom的分析工具 MAT诺舔、JProfiler
GC(垃圾回收) 運(yùn)用到的算法
如何找到垃圾: 引用計(jì)數(shù)法
(1)復(fù)制算法:將有用的對(duì)象復(fù)制到另一邊,將剩下的都清理掉春贸,適合對(duì)象少混萝,優(yōu)點(diǎn)是效率高,但是浪費(fèi)空間萍恕;(適合年輕代)
(2)標(biāo)記清除法 :先掃描一遍逸嘀,將不要的對(duì)象標(biāo)記一下,再次掃描允粤,清除不要的對(duì)象崭倘; 缺點(diǎn):兩次掃描翼岁,嚴(yán)重浪費(fèi)時(shí)間,會(huì)產(chǎn)生空間碎片司光,優(yōu)點(diǎn):不需要額外的空間’琅坡,適合對(duì)象多
(3)標(biāo)記壓縮法:也是掃描兩次,第一次先標(biāo)記不用的残家,第二次進(jìn)行清理壓縮榆俺,效率比較低,但是沒有空間碎片

JMM :Java Memory Model

是什么坞淮?
是干嘛的茴晋?
JMM是和多線程相關(guān)的,他描述了一組規(guī)則或規(guī)范回窘,這個(gè)規(guī)范定義了一個(gè)線程對(duì)共享變量的寫入時(shí)對(duì)另一個(gè)線程是可見的诺擅。
如何學(xué)習(xí)?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末啡直,一起剝皮案震驚了整個(gè)濱河市烁涌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酒觅,老刑警劉巖撮执,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阐滩,居然都是意外死亡二打,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門掂榔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來继效,“玉大人,你說我怎么就攤上這事装获∪鹦牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵穴豫,是天一觀的道長(zhǎng)凡简。 經(jīng)常有香客問我,道長(zhǎng)精肃,這世上最難降的妖魔是什么秤涩? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮司抱,結(jié)果婚禮上筐眷,老公的妹妹穿的比我還像新娘。我一直安慰自己习柠,他們只是感情好匀谣,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布照棋。 她就那樣靜靜地躺著,像睡著了一般武翎。 火紅的嫁衣襯著肌膚如雪烈炭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天宝恶,我揣著相機(jī)與錄音符隙,去河邊找鬼。 笑死卑惜,一個(gè)胖子當(dāng)著我的面吹牛膏执,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播露久,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼欺栗!你這毒婦竟也來了毫痕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤迟几,失蹤者是張志新(化名)和其女友劉穎消请,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體类腮,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡臊泰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚜枢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缸逃。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖厂抽,靈堂內(nèi)的尸體忽然破棺而出需频,到底是詐尸還是另有隱情,我是刑警寧澤筷凤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布昭殉,位于F島的核電站,受9級(jí)特大地震影響藐守,放射性物質(zhì)發(fā)生泄漏挪丢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一卢厂、第九天 我趴在偏房一處隱蔽的房頂上張望乾蓬。 院中可真熱鬧,春花似錦足淆、人聲如沸巢块。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽族奢。三九已至姥闭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間越走,已是汗流浹背棚品。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廊敌,地道東北人铜跑。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像骡澈,于是被迫代替她去往敵國和親锅纺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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