【JVM】GC 常見問題

GC 常見問題

哪些情況新生代會進入老年代

  • 新生代 GC 后幸存區(survivor)不夠存放存活下來的對象,會通過內存擔保機制晉升到老年代。
  • 大對象直接進入老年代,因為大對象再新生代之間來會復制會影響 GC 性能。由 -XX:PretenureSizeThreshold=1048576配置
  • 長期存活的對象,比如經過了15次gc后還存活的對象,由-XX:MaxTenuringThreshold=10配置
    • 但是這個年齡是會動態調整的,每次新生代GC后,JVM都會動態調整這個閾值大小,調整的方式是,從年齡為1的所有對象向上累加,直到內存大小大于-XX:TargetSurvivorRatio(默認50%)
    • 例如總共有100MB新生代大小,閾值就是50MB,累加年齡為1的對象,此時10MB,累加年齡為2的對象,此時25MB,累加年齡為3的對象,此時45MB,累加年齡為4的對象,此時55MB>50MB,那么閾值就被設置成4,下次GC時年齡大于等于4的對象會晉升到老年代
    • 為什么默認是15?
      • 因為對象頭里有個age字段,占4個bit位,所以最大就是15,初始值設為最大,然后依靠后面動態調整。
    • 那這樣的話,小于等于15都可以吧,反正有動態調整,為什么選15呢?
      • 因為-XX:MaxTenuringThreshold其實是限定了一個動態調整年齡范圍的上限,設為15能讓動態調整更為靈活

什么時候 Full GC

  • 調用 System.gc()
  • 新生代對象晉升老年代時,老年代內存不足。此時觸發Full GC。
  • 大對象分配到老年代時,老年代內存不足。此時觸發Full GC。
  • 元空間內存不足,Full GC回收沒有使用的類(類沒有實例化對象)。
  • CMS GC時有對象要放入老年代,老年代內存不足,報Concurrent Mode Failure 錯誤,并觸發 Full GC。
  • G1 回收器回收速率跟不上對象分配速率,也會觸發 Full GC。

什么是 Concurrent Mode Failure?

  • CMS收集器在工作時,因為用于線程和垃圾回收在并發標記和并發清除階段是并行的,此時老年代空間不足(例如浮動垃圾過多,用戶創建對象頻繁,新生代晉升老年代),就會出現Concurrent Mode Failure
  • 出現Concurrent Mode Failure會怎樣?
  • 觸發Full GC

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897911.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897911.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897911.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Audacity 技術淺析(一)

Audacity 是一個開源的音頻編輯工具,雖然它主要用于音頻編輯和處理,但也可以通過一些插件和功能實現基本的音頻生成功能。 1. Audacity 的音頻生成基礎 Audacity 的音頻生成主要依賴于其內置的生成器、效果器以及 Nyquist 編程語言。這些工具允許用戶創…

G-Star 公益行起航,揮動開源技術點亮公益!

公益組織,一直是社會溫暖的傳遞者,但在數字化浪潮中,也面臨著諸多比大眾想象中復雜的挑戰:項目管理如何更高效?志愿者管理又該如何創新?宣傳推廣怎么才能更有影響力?內部管理和技術支持又該如何…

MongoDB 數據導出與導入實戰指南(附完整命令)

1. 場景說明 在 MongoDB 運維中,數據備份與恢復是核心操作。本文使用 mongodump 和 mongorestore 工具,演示如何通過命令行導出和導入數據,解決副本集連接、路徑指定等關鍵問題。 2. 數據導出(mongodump) 2.1 導出命…

京東 h5st 5.1 分析

聲明: 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 逆向分析 學習了2天某物,f…

CentOS 系統安裝 docker 以及常用插件

博主用的的是WindTerm軟件鏈接的服務器,因為好用 1.鏈接上服務器登入后,在/root/目錄下 2.執行以下命令安裝docker sudo yum install -y yum-utilssudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.reposudo…

不像人做的題————十四屆藍橋杯省賽真題解析(上)A,B,C,D題解析

題目A:日期統計 思路分析: 本題的題目比較繁瑣,我們采用暴力加DFS剪枝的方式去做,我們在DFS中按照8位日期的每一個位的要求進行初步剪枝找出所有的八位子串,但是還是會存在19月的情況,為此還需要在CHECK函數…

【redis】set 類型:基本命令

文章目錄 基本概念SADD 和 SMEMBERSSCARDSPOPSRANDMEMBERSMOVESREM集合間操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 命令小結內部編碼 基本概念 談到一個屬于,這個術語可能有多種含義,set 集合設置(和 get 相對應&#xff09…

C 語言進【進階篇】之動態內存管理:從底層機制到實戰優化

目錄 🚀前言🌟動態內存分配的必要性🤔動態內存分配函數深度剖析💯malloc函數:內存申請的主力軍💯free函數:釋放內存的“清道夫”💯calloc函數:初始化內存的利器&#x1f…

2023華東師范大學計算機復試上機真題

2023華東師范大學計算機復試上機真題 2022華東師范大學計算機復試上機真題 2021華東師范大學計算機復試上機真題 2023華東師范大學計算機復試機試真題 2022華東師范大學計算機復試機試真題 2021華東師范大學計算機復試機試真題 在線評測:傳送門:pgcode.…

Mac下安裝Zed以及Zed對MCP(模型上下文協議)的支持

Zed是當前新流行的一種編輯器,支持MCP(模型上下文協議) Mac下安裝Zed比較簡單,直接有安裝包,在這里: brew install --cask zedMac Monterey下是可以安裝上的,親測有效。 配置 使用CtrlShiftP…

Spring Boot 約定大于配置:實現自定義配置

文章目錄 Spring Boot 約定大于配置:實現自定義配置引言1. Spring Boot 的約定大于配置2. 自定義配置的需求3. 實現自定義配置的步驟4. 示例:自定義 Spring MVC 配置4.1 創建自定義配置類4.2 創建自定義攔截器4.3 測試自定義配置 5. 其他自定義配置場景5…

交易系統優化方案

證券交易系統優化方案 一、選股策略體系 (一)擇時策略矩陣 尾盤集中篩選法(14:30后)聚焦量價異動個股,捕捉次日溢價機會早盤轉債套利法(9:25-10:00)通過可轉債與正股聯動性捕捉日內機會龍頭戰法(全時段)行業板塊強度排序,鎖定前三大市值龍頭容量資金戰法(中盤股適用…

在線Doc/Docx轉換為PDF格式 超快速轉換的一款辦公軟件 文檔快速轉換 在線轉換免費轉換辦公軟件

小白工具https://www.xiaobaitool.net/files/word-pdf/提供了一項非常實用的在線服務——將Doc或Docx格式的文檔快速轉換為PDF格式。這項服務不僅操作簡單,而且轉換效率高,非常適合需要頻繁處理文檔轉換的用戶。 服務特點: 批量轉換&#x…

java學習總結(四)MyBatis多表

一、多表結構 學生表、班級表、課程表、班級課程表 二、一對一 一個學生只屬于一個班級。 查詢:id name age gender banjiName SELECT s.id,s.name,s.age,s.gender,b.id AS banjiId,b.name AS banjiName FROM student AS s INNER JOIN banji AS b ON s.banji_id…

大語言模型學習及復習筆記(1)語言模型的發展歷程

1.大模型進入人們視野 ChatGPT 于2022年11月底上線 模型名稱 發布時間 核心突破 GPT-3 2020年6月 首款千億參數模型,少樣本學習 GPT-3.5-Turbo 2022年11月 對話能力優化,用戶級應用落地 GPT-4 2023年3月 多模態、強邏輯推理 GPT-4o / GPT-4…

【NLP】 3. Distributional Similarity in NLP(分布式相似性)

Distributional Similarity in NLP(分布式相似性) 分布式相似性(Distributional Similarity) 是自然語言處理(NLP)中的核心概念,基于“相似的單詞出現在相似的上下文中”這一假設。它用于衡量單…

【C#學習】協程等待

來源GPT,僅記錄學習 yield return WaitForEndOfFrame() 適用于 渲染結束后再執行代碼,但 WebGL 可能不適合這個操作,會拖慢幀率。(渲染得太慢) yield return null; 讓代碼在下一幀的 Update() 里繼續運行,更加流暢。 …

【項目】負載均衡式在線OJ

負載均衡式在線OJ 目錄 負載均衡式在線OJ 1.項目介紹: 2.comm 2.1 log.hpp 日志等級 開放式日志 時間戳工具 2.2 util.hpp TimeUtil類 PathUtil類 FileUtil類 StringUtil類 3.Compile_server 3.1compile_run.hpp RemoveTempFile CodeToDesc Start 3.…

實現“XXX一張圖“進行環境設施設備可視化管理

實現“電網一張圖”、“鐵路一張圖”、“水庫一張圖”、“森林一張圖”等概念,本質上是將某一領域的空間數據、設施設備、運行狀態等信息整合到一個統一的數字化平臺上,實現全域可視化、智能化管理和協同運營。這種“一張圖”模式依賴于地理信息系統(GIS)、物聯網(IoT)、…

《基於Python的網絡爬蟲抓包技術研究與應用》

## 摘要 本文探討了基于Python的網絡爬蟲抓包技術及其應用。隨著互聯網數據的快速增長,網絡爬蟲技術在數據采集和分析中扮演著越來越重要的角色。本研究首先介紹了網絡爬蟲的基本概念和Python在爬蟲開發中的優勢,然后深入分析了抓包技術的原理和常用工具…