麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

聊聊JVM的年輕代

2019-11-14 12:29:02
字體:
供稿:網(wǎng)友

文章出處:http://ifeve.com/jvm-yong-generation/

聊聊JVM的年輕代

1.為什么會(huì)有年輕代

我們先來屢屢,為什么需要把堆分代?不分代不能完成他所做的事情么?其實(shí)不分代完全可以,分代的唯一理由就是優(yōu)化GC性能。你先想想,如果沒有分代,那我們所有的對象都在一塊,GC的時(shí)候我們要找到哪些對象沒用,這樣就會(huì)對堆的所有區(qū)域進(jìn)行掃描。而我們的很多對象都是朝生夕死的,如果分代的話,我們把新創(chuàng)建的對象放到某一地方,當(dāng)GC的時(shí)候先把這塊存“朝生夕死”對象的區(qū)域進(jìn)行回收,這樣就會(huì)騰出很大的空間出來。

2.年輕代中的GC

    HotSpot JVM把年輕代分為了三部分:1個(gè)Eden區(qū)和2個(gè)Survivor區(qū)(分別叫from和to)。默認(rèn)比例為8:1,為啥默認(rèn)會(huì)是這個(gè)比例,接下來我們會(huì)聊到。一般情況下,新創(chuàng)建的對象都會(huì)被分配到Eden區(qū)(一些大對象特殊處理),這些對象經(jīng)過第一次Minor GC后,如果仍然存活,將會(huì)被移到Survivor區(qū)。對象在Survivor區(qū)中每熬過一次Minor GC,年齡就會(huì)增加1歲,當(dāng)它的年齡增加到一定程度時(shí),就會(huì)被移動(dòng)到年老代中。

因?yàn)槟贻p代中的對象基本都是朝生夕死的(80%以上),所以在年輕代的垃圾回收算法使用的是復(fù)制算法,復(fù)制算法的基本思想就是將內(nèi)存分為兩塊,每次只用其中一塊,當(dāng)這一塊內(nèi)存用完,就將還活著的對象復(fù)制到另外一塊上面。復(fù)制算法不會(huì)產(chǎn)生內(nèi)存碎片。

在GC開始的時(shí)候,對象只會(huì)存在于Eden區(qū)和名為“From”的Survivor區(qū),Survivor區(qū)“To”是空的。緊接著進(jìn)行GC,Eden區(qū)中所有存活的對象都會(huì)被復(fù)制到“To”,而在“From”區(qū)中,仍存活的對象會(huì)根據(jù)他們的年齡值來決定去向。年齡達(dá)到一定值(年齡閾值,可以通過-XX:MaxTenuringThreshold來設(shè)置)的對象會(huì)被移動(dòng)到年老代中,沒有達(dá)到閾值的對象會(huì)被復(fù)制到“To”區(qū)域。經(jīng)過這次GC后,Eden區(qū)和From區(qū)已經(jīng)被清空。這個(gè)時(shí)候,“From”和“To”會(huì)交換他們的角色,也就是新的“To”就是上次GC前的“From”,新的“From”就是上次GC前的“To”。不管怎樣,都會(huì)保證名為To的Survivor區(qū)域是空的。Minor GC會(huì)一直重復(fù)這樣的過程,直到“To”區(qū)被填滿,“To”區(qū)被填滿之后,會(huì)將所有對象移動(dòng)到年老代中。

young_gc

3.一個(gè)對象的這一輩子

我是一個(gè)普通的java對象,我出生在Eden區(qū),在Eden區(qū)我還看到和我長的很像的小兄弟,我們在Eden區(qū)中玩了挺長時(shí)間。有一天Eden區(qū)中的人實(shí)在是太多了,我就被迫去了Survivor區(qū)的“From”區(qū),自從去了Survivor區(qū),我就開始漂了,有時(shí)候在Survivor的“From”區(qū),有時(shí)候在Survivor的“To”區(qū),居無定所。直到我18歲的時(shí)候,爸爸說我成人了,該去社會(huì)上闖闖了。于是我就去了年老代那邊,年老代里,人很多,并且年齡都挺大的,我在這里也認(rèn)識了很多人。在年老代里,我生活了20年(每次GC加一歲),然后被回收。

4.有關(guān)年輕代的JVM參數(shù)

1)-XX:NewSize和-XX:MaxNewSize

用于設(shè)置年輕代的大小,建議設(shè)為整個(gè)堆大小的1/3或者1/4,兩個(gè)值設(shè)為一樣大。

2)-XX:SurvivorRatio

用于設(shè)置Eden和其中一個(gè)Survivor的比值,這個(gè)值也比較重要。

3)-XX:+PRintTenuringDistribution

這個(gè)參數(shù)用于顯示每次Minor GC時(shí)Survivor區(qū)中各個(gè)年齡段的對象的大小。

4).-XX:InitialTenuringThreshol和-XX:MaxTenuringThreshold

用于設(shè)置晉升到老年代的對象年齡的最小值和最大值,每個(gè)對象在堅(jiān)持過一次Minor GC之后,年齡就加1
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 综合毛片 | 久久精品视频1 | 精品久久久久久久久久久久久久久久久久久 | 欧美精品v国产精品v日韩精品 | 午夜网站视频 | 国产在线播放一区二区 | 国产精选91| xxxxhd86日本护士hd | 日本教室三级在线看 | 在线成人免费观看视频 | 欧美成人免费 | 久久精品污 | 成人在线视频国产 | 国产成年人小视频 | 免费在线观看成人av | 黄色毛片18| 免费视频一区 | 久久露脸国语精品国产91 | 久久精品一区二区三 | 国产1区2区在线 | 久久久久久久久淑女av国产精品 | 国产91久久久久久 | 久久国产精品二国产精品 | 99爱福利视频在线观看 | 做爰xxxⅹ性护士hd在线 | 精品欧美一区二区精品久久 | 午夜视频在线观看91 | a免费毛片 | 日本在线不卡一区二区三区 | 精国产品一区二区三区四季综 | 黄色片在线免费播放 | 一本色道久久综合狠狠躁篇适合什么人看 | 国产一级毛片av | 国产精品久久久久久久久久久久久久久 | 12av毛片| av电影观看| 精精国产xxxx视频在线野外 | 亚洲国产视频网 | 午夜视频中文字幕 | 一区二区免费看 | 亚洲精品午夜电影 |