<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
分為三個部分(以下名詞表示同一個區):
唯一目的就是優化GC效能。
如果沒有分代,我們所有的物件都放在一塊,GC的時候我們需要對堆的所有區域進行掃描。而很多的物件都是“朝生夕死”的,如果把建立的新的物件都放在某一地方,當GC的時候就先把“朝生夕死”物件的區域進行回收,這樣就會騰出很多大的空間來。
新生區分為:Eden區、Survivor0區、Survivor1區(也稱為from區和to區)
其中Eden區佔80%的記憶體空間,每塊Survivor各佔用10%的記憶體空間(如:Eden佔800M,每個Survivor佔100M)
1.開始時建立的物件都是分配在Eden區域中,當Eden區快滿了,就會觸發垃圾回收Minor GC(使用複製演演算法進行垃圾回收)
2.Minor GC處理後,首先會把Eden區中還存活著的物件一次性轉入其中一塊空閒著的Survivor區。然後清空Eden區,之後建立的物件就繼續放入Eden區中了,直至下次Eden又被填滿。
3.Eden再次被填滿時,就會再次出發Minor GC,清理後(Minor會清理Eden區和Survivor區的記憶體),Eden區和存在物件的Survivor區(此時的from區)中存活的物件轉移到另一塊空著的Survivor區中(此時的to區),並清空Eden區和之前存在物件的Survivor區(此時變為to區了,“From”和“To”會交換他們的角色,也就是新的“To”就是上次GC前的“From”,新的“From”就是上次GC前的“To”。)
這就是複製演演算法的流程。
一直要保持一個Survivor區是空的以提供複製演演算法垃圾回收,而這塊區域的記憶體只佔整塊的10%,其他90%記憶體都可以被使用,課件記憶體利用率還是相當高的。
預設情況下,如果新生區中的某個物件經歷了15次GC後,還是沒有被回收掉,那麼它就會被轉入老年區。
可通過JVM引數“-XX:MaxTenuringThreshold”來設定,預設是15。
這種方法不用等到經歷GC15次。
假如一批物件總大小大於當前Survivor區記憶體的50%,那麼大於等於這批物件年齡的物件就會被轉移到老年區。
例:假設Survivor0區中的兩個物件都經歷的3次GC(年齡3),而且這兩個物件總大小50M,超過了Survivor0區記憶體大小的一半。那麼此時Survivor0區中年齡大於等於3歲的物件就都要被全部轉移到老年區。
有一個JVM引數"-XX:PretenureSizeThreshold",預設值是0,表示任何情況都先把物件分配給Eden區。
若設定為1048576位元組,也就是1M。則表示當建立的物件大於1M時,就會直接把這個物件放入到老年區,就根本不會經過新生區了。
這麼做的原因:大物件在經歷複製演演算法進行GC的時候會降低效能。
Minor GC後存活的物件太多,導致Survivor區放不下了,此時就會將所有的物件直接轉移到老年區中。
執行每一次Minor GC前,JVM都先檢查一下老年區可用的記憶體空間是否大於新生區所有物件的總大小。
原因:極端情況下,Minor GC後,新生代中所有的物件都活了下來,那就會把所有新生代中的物件放入老年區中。
三種情況遞進理解:
1.如果Minor GC後,存活的物件<Survivor區大小,直接進入Survivor區即可;
2.如果Minor GC後,存活的物件>Survivor區大小,但<老年區可用記憶體,直接進入老年區;
3.若Minor GC後,此時老年區都放不下這些存活的物件了,就會觸發Full GC;
如果Full GC後老年區記憶體還是不夠用,就會導致OOM記憶體溢位。
標記整理演演算法
【原理】
一開始物件都是任意分佈的,在經歷完垃圾回收之後,就會標記出哪些是存活物件,哪些是垃圾物件,然後就會把這些存活的物件在記憶體中進行整理移動,儘量都挪到一邊去靠在一起,然後再把垃圾物件進行清除,這樣做的好處就是避免了垃圾回收後產生的大片記憶體碎片。
【缺點】
較為耗時,比複製演演算法慢10倍;
所以如果系統頻繁出現Full GC,會嚴重影響系統效能,出現卡頓。所以JVM優化的一大問題就是減少Full GC頻率。
新生區和老年區進行垃圾回收時是通過不同的垃圾回收器進行回收的
Seral 和 Seral Old垃圾回收器
ParNew和CMS垃圾回收器
G1垃圾回收器
統一收集新生區和老年區,採用更加優秀的演演算法機制。
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45