發(fā)布時(shí)間:2019-07-29 12:06??發(fā)布人:南京北大青鳥??發(fā)布來源:南京北大青鳥??瀏覽人數(shù):185
自第一季伊始,眼看著一個(gè)個(gè)人物華麗麗地登場(chǎng)了,當(dāng)然其中也有灰溜溜地出場(chǎng)的,安達(dá)爾人、先民、森林之子、瓦力亞人、多斯拉克人,人物多得讓人眼花繚亂,還有三條巨龍。
而作為面向?qū)ο蟮木幊陶Z(yǔ)言,整個(gè)Java開發(fā)就是圍繞對(duì)象進(jìn)行的,每個(gè)程序都要?jiǎng)?chuàng)造許多大大小小、各種各樣的對(duì)象。這么多對(duì)象如果一直存活著,是非常占據(jù)內(nèi)存的,勢(shì)必要造成資源的白白浪費(fèi),所以放在JVM中的對(duì)象免不了“凡人皆有一死”。究竟怎么個(gè)死法?被毒死被射死被砍頭被割喉被燒死被血影殺死?都不是。
大部分Java對(duì)象剛被創(chuàng)造出來的時(shí)候就被放置在了這里,它們自己并不知道日后的命運(yùn),就像維斯特和呃索斯大陸上被創(chuàng)造的無數(shù)生命并不知道自己何時(shí)會(huì)死亡一樣。
新生代中的對(duì)象們安安靜靜地等待著程序的調(diào)遣,然后本本分分地發(fā)揮著自己的作用,正如北境的小姐懷著她的王后夢(mèng)坐在壁爐前安靜地做著刺繡,英俊的騎士與愛人在快活地調(diào)著情,慈愛的母親懷著身孕參加一場(chǎng)浪漫的婚禮,誰(shuí)能想到自己即將成為無辜的冤魂呢?
Java對(duì)象們也不知道,它們并不知道老王何時(shí)會(huì)在程序中丟棄它們,老王也不知道將它們丟棄后,死神一般的垃圾回收器何時(shí)會(huì)找到它們。
JVM毫無預(yù)備地發(fā)起了一次Minor GC,不少對(duì)象被消亡了,奈德·史塔克和勞勃國(guó)王這對(duì)曾經(jīng)的好基友就死于這次GC,一言不合被安排領(lǐng)了便當(dāng)。
活下來的對(duì)象被JVM從Eden區(qū)轉(zhuǎn)移到了Survivor 區(qū),然后歷經(jīng)一次又一次的Minor GC,15次(默認(rèn)進(jìn)入老年代的值,可以通過參數(shù)–XX : Max Tenuring Threshold 來設(shè)定)之后,80%以上的對(duì)象都死了。
這是什么概念?
放在權(quán)力的游戲中,可不是小惡魔把他的父親射死在馬桶上,然后勒死自己的情婦那么簡(jiǎn)單,加起來就兩條人命,也不是獲得重生后的雪諾處決掉的幾條叛亂者的性命,而是私生子戰(zhàn)役中,被堆成小山包似的尸首,是龍母御駕親征時(shí),被熊熊烈焰燒成灰燼的蘭尼斯特大軍,更是寒冬降臨之后,無數(shù)死于饑寒的平民。
只有戰(zhàn)爭(zhēng)和凜冬帶來的災(zāi)難才能與這樣的GC相提并論。
新生代中的對(duì)象顛沛流離,從一個(gè)區(qū)域被轉(zhuǎn)至另一個(gè)區(qū)域,更要面臨著隨時(shí)被干掉的危險(xiǎn),老王由此想到了斯塔克家的兩個(gè)女孩,一個(gè)在維斯特大陸輾轉(zhuǎn)流離,一個(gè)在自由城邦——一片完全陌生的土地上歷經(jīng)磨難,過著朝不保夕的生活。
可是,一旦躲過了這樣的災(zāi)難,在這樣的災(zāi)難下艱難地挺了過來的人,將會(huì)變得更加強(qiáng)大。臨冬城史塔克家的幾個(gè)孩子有的經(jīng)不住考驗(yàn)掛了,有的歷經(jīng)磨難活了下來。拜拉席恩家的幾個(gè)男性繼承人不堪一擊,反而色后出色地活了下來,并且登上了鐵王座。
新生代中那些僥幸躲過15次GC的Java對(duì)象終于進(jìn)入了老年代,一旦進(jìn)了老年代的門,它們是不會(huì)那么容易就“死掉”了的,做一次 Full GC 要比進(jìn)行一次 Minor GC 的時(shí)間更長(zhǎng)。
例如二丫如果想刺殺色后,必得費(fèi)一番功夫。二丫和三傻也沒有人能將她們輕易殺死,除非夜王領(lǐng)著他的異鬼大軍舉兵南下,那時(shí)無人幸免。
也不是非得經(jīng)過層層磨難才可以存活下來,JVM中的一些大對(duì)象在創(chuàng)建之初就被直接扔進(jìn)了老年代,比如String字符串。
龍母就是這樣的大對(duì)象,她生來不凡,“風(fēng)暴降生”的名號(hào)可不是浪得虛名,何況她浴火重生,整個(gè)維斯特大陸都在等著她去收復(fù)呢!她要是掛了,誰(shuí)去和色后爭(zhēng)奪鐵王座?雪諾也是一樣,誰(shuí)叫他是“預(yù)言中的王子”呢!
姑且把夜王和他的異鬼大軍放在這里吧,原因有二,一是永久代比較特殊,它存放的是程序需要的應(yīng)用元數(shù)據(jù)而非對(duì)象,二是永久并不代表永久不死。
異鬼不是人類,而且他們雖然不會(huì)生老病死,但是同樣會(huì)死于火焰、龍晶和守夜人的刀劍之下。相比與維斯特大陸和狹海對(duì)岸的死亡,異鬼中的死亡并沒有給老王留下什么深刻的印象,死了誰(shuí)都是一個(gè)樣。
無論是老年代還是永久代中的對(duì)象都不是安全的,因?yàn)?ldquo;凡人皆有一死”,只不過何時(shí)死并不知道,因?yàn)镴VM銷毀對(duì)象是隨機(jī)的,不可預(yù)測(cè)的。就好比躲過前七季的死亡、順利活到第八季的人物誰(shuí)死誰(shuí)活也是不確定的,只有作者喬治·馬丁知道。
那么問題來了,你覺得終結(jié)季里哪些角色會(huì)躲過一劫而頑強(qiáng)地活下來呢?
版權(quán)聲明:本文Java在權(quán)力的游戲里能活到第幾集_中博培訓(xùn)學(xué)校: http://www.docoa.com.cn/kczx/153.html 禁止一切方式轉(zhuǎn)載、抄襲!
相關(guān)內(nèi)容:
更多人關(guān)注: