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