中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Java內存分配與回收策略

本篇內容介紹了“Java內存分配與回收策略”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

成都創新互聯公司專注為客戶提供全方位的互聯網綜合服務,包含不限于網站建設、網站制作、江津網絡推廣、小程序定制開發、江津網絡營銷、江津企業策劃、江津品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創新互聯公司為所有大學生創業者提供江津建站搭建服務,24小時服務熱線:028-86922220,官方網址:m.2m8n56k.cn

內存分配與回收策略

Minor GC 和 Full GC

  • Minor GC:發生在新生代上,因為新生代對象存活時間很短,因此 Minor GC 會頻繁執行, 執行的速度一般也會比較快。

  • Full GC:又稱Major GC,發生在老年代上,老年代對象其存活時間長, 因此 Full GC 很少執行,執行速度會比 Minor GC 慢很多。

1. 對象優先在 Eden 分配

大多數情況下,對象在新生代 Eden 區分配,當 Eden 區空間不夠時,發起 Minor GC。

2. 大對象直接進入老年代

大對象是指需要連續內存空間的對象,最典型的大對象是那種很長的字符串以及數組。

經常出現大對象會提前觸發垃圾收集以獲取足夠的連續空間分配給大對象。

-XX:PretenureSizeThreshold,大于此值的對象直接在老年代分配,避免在 Eden 區和 Survivor 區之間的大量內存復制。

3. 長期存活的對象進入老年代

為對象定義年齡計數器,對象在 Eden 出生并經過 Minor GC 依然存活, 將移動到 Survivor 中,年齡就增加 1 歲,增加到一定年齡則移動到老年代中。

-XX:MaxTenuringThreshold 用來定義年齡的閾值。

4. 動態對象年齡判定

虛擬機并不是永遠地要求對象的年齡必須達到 MaxTenuringThreshold 才能晉升老年代, 如果在 Survivor 中相同年齡所有對象大小的總和大于 Survivor 空間的一半, 則年齡大于或等于該年齡的對象可以直接進入老年代,無需等到 MaxTenuringThreshold 中要求的年齡。

5. 空間分配擔保

在發生 Minor GC 之前,虛擬機先檢查老年代最大可用的連續空間是否大于新生代所有對象總空間,如果條件成立的話,那么 Minor GC 可以確認是安全的。

如果不成立的話虛擬機會查看 HandlePromotionFailure 設置值是否允許擔保失敗,如果允許那么就會繼續檢查老年代最大可用的連續空間是否大于歷次晉升到老年代對象的平均大小,如果大于,將嘗試著進行一次 Minor GC;如果小于,或者 HandlePromotionFailure 設置不允許冒險,那么就要進行一次 Full GC。

Full GC 的觸發條件

對于 Minor GC,其觸發條件非常簡單,當 Eden 空間滿時,就將觸發一次 Minor GC。 而 Full GC 則相對復雜,有以下條件:

  • 相應腦圖

1. 調用 System.gc()

只是建議虛擬機執行 Full GC,但是虛擬機不一定真正去執行。不建議使用這種方式,而是讓虛擬機管理內存。

2. 老年代空間不足

老年代空間不足的常見場景為前文所講的大對象直接進入老年代、長期存活的對象進入老年代等。

為了避免以上原因引起的 Full GC,應當盡量不要創建過大的對象以及數組。 除此之外,可以通過 -Xmn 虛擬機參數調大新生代的大小,讓對象盡量在新生代被回收掉,不進入老年代。 還可以通過 -XX:MaxTenuringThreshold 調大對象進入老年代的年齡,讓對象在新生代多存活一段時間。

3. 空間分配擔保失敗

使用復制算法的 Minor GC 需要老年代的內存空間作擔保,如果擔保失敗會執行一次 Full GC。 具體內容請參考上面的第五小節。

4. JDK 1.7 及以前的永久代空間不足

在 JDK 1.7 及以前,HotSpot 虛擬機中的方法區是用永久代實現的, 永久代中存放的為一些 Class 的信息、常量、靜態變量等數據。

當系統中要加載的類、反射的類和調用的方法較多時,永久代可能會被占滿, 在未配置為采用 CMS GC 的情況下也會執行 Full GC。 如果經過 Full GC 仍然回收不了,那么虛擬機會拋出 java.lang.OutOfMemoryError。

為避免以上原因引起的 Full GC,可采用的方法為增大永久代空間或轉為使用 CMS GC。

5. Concurrent Mode Failure

執行 CMS GC 的過程中同時有對象要放入老年代,而此時老年代空間不足 (可能是 GC 過程中浮動垃圾過多導致暫時性的空間不足), 便會報 Concurrent Mode Failure 錯誤,并觸發 Full GC。

“Java內存分配與回收策略”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯網站,小編將為大家輸出更多高質量的實用文章!

網站題目:Java內存分配與回收策略
鏈接分享:http://m.2m8n56k.cn/article48/gseghp.html

成都網站建設公司_創新互聯,為您提供響應式網站、微信公眾號、定制網站移動網站建設面包屑導航網站營銷

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
主站蜘蛛池模板: 亚洲日本aⅴ片在线观看香蕉 | 日韩成人毛片高清视频免费看 | 亚洲男人的天堂久久无 | 玖玖国产在线观看 | 精品91 | 亚洲精品区一区二区三区四 | 欧美牛逼aa| 国产一区二区在线视频 | 日韩一区二区中文字幕 | 亚洲在线观看免费视频 | 九九99香蕉在线视频网站 | 香蕉成人在线 | 特黄特级a级黄毛片免费观看多人 | 一区二区三区免费 | 日本a级三级三级三级久久 日本a级特黄三级三级三级 | 亚洲国产精品久久网午夜 | 一级黄一片 | 久久99久久99精品观看 | 欧美成人性色xxxx视频 | 国产精品久久成人影院 | 免费国内精品久久久久影院 | 国产精品日韩欧美在线 | 好湿好紧好痛a级是免费视频 | 福利姬在线精品观看 | 台湾三级香港三级在线理论 | 日本欧美一级二级三级不卡 | 国产成人综合网在线观看 | 成人男女视频 | 成熟的女性强烈交性视频 | 亚洲免费视频播放 | 高清在线精品一区二区 | 国产精品久久久久久久hd | 欧美成人ass| 国产第一亚洲 | 免费看成人www的网站软件 | 毛片女| 99热成人| 日本一级毛片在线看 | 九九免费在线视频 | 国产成人精品免费视频大全可播放的 | 欧美另类videosbestsex高清 |