一次性理解Java垃圾回收--簡單直接方便面試時使用

Java的垃圾回收是一個面試必問題,只要按照下面的步驟回答肯定不會有大問題。

1.先告訴面試官垃圾回收分為兩大步:

a.識別哪些對象是"垃圾"(不再被使用的對象)
b.回收這些垃圾對象占用的內存空間

2. 接下來分別介紹標記階段和回收階段的細節

標記階段(比較簡單,兩句話):

從GC Roots(包括虛擬機棧、本地方法棧、方法區中的靜態屬性、常量等引用)開始遍歷;
被GC Roots直接或間接引用到的對象標記為存活,其他的就是垃圾

清除階段(回答重點,有多種算法實現):

標記-清除算法:

直接清除被標記為垃圾的對象【簡單直接,但是會產生內存碎片】

標記-整理算法:

將所有存活對象向內存的一端移動,然后清理界外內存【避免內存碎片,但是對象移動的成本比較高】

復制算法

將內存分成兩塊,只使用其中一塊,GC時將存活對象復制到另一塊【無碎片,高效;但是內存利用率只有50%】

上面三種基礎算法,但是現在常用垃圾收集器都是綜合使用上面的算法,也就是:

分代收集

把整個堆空間進行劃分,分為新生代 & 老年代 & 元空間【本地內存】

新生代 (存活的對象少)

使用復制算法
Eden和Survivor 區 新對象在Eden區;Eden區滿出發Minor G(理想間隔1-5分鐘,<100ms),存活對象移動的Survivour 區,Survivor區間內分兩個空間,回收的時候互相多次復制(默認15次)后晉升到老年代

老年代

使用標記-清除或標記-整理算法
存放長期存活的對象
當老年代空間不足時觸發Major GC/Full GC(應極少發生(<1次/天;<1s))

3.拓展部分

常用的調優手段:
1.web開發一般用G1作為垃圾回收期比較多(-XX:+UseG1GC)
2.怎么確認GC 是否有異常:
打印GC日志,看GC頻率是否正常
(-Xloggc:/path/to/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-XX:+PrintTenuringDistribution)
3. jmap 命令
4.調整新生代的比例
短生命周期對象多的應用:增大新生代(NewRatio=1)
長生命周期對象多的應用:減小新生代(NewRatio=3)
-XX:NewRatio=2(新生代:老年代=1:2)

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

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

相關文章

XML映射文件-輔助配置

如果你沒有按照同包同名來&#xff0c;就要下面的配置&#xff0c;指定好路徑 1.把路徑改為類下面的xml文件 #指定xml映射文件的位置 mybatis.mapper-locationsclasspath:mapper/*.xml

120、三角形最小路徑和

題目 解答&#xff1a; 直接按照空間復雜度O(n)來做了。這種明顯是動態規劃&#xff0c;每一層用到上一層的信息。 觀察數據形狀&#xff0c;如下&#xff1a; (0,0) (1,0)(1,1) (2,0)(2,1)(2,2) (3,0)(3,1)(3,2)(3,3) ... (n-1,0)...(n-1,n-1) 設dp[n],定義為本層第n…

仕么是Transformer以及工作原理和架構

Transformer 是一種革命性的**深度學習架構**&#xff0c;由 Google 團隊在 2017 年論文《Attention is All You Need》中提出。它徹底改變了自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;并逐漸擴展到計算機視覺、語音識別等多模態任務。其核心創新在于**完全依賴…

opencv 鎖頁內存的使用

在OpenCV的CUDA編程中&#xff0c;cv::cuda::HostMem類用于管理鎖頁內存&#xff08;Page-Locked Memory&#xff09;?&#xff0c;這種內存能顯著提升主機&#xff08;CPU&#xff09;與設備&#xff08;GPU&#xff09;間的數據傳輸效率。而.createMatHeader()正是將HostMem…

亞遠景-ASPICE與ISO 26262:理解汽車軟件質量保障的雙標體系

在汽車行業向智能化、電動化轉型的背景下&#xff0c;ASPICE&#xff08;Automotive SPICE&#xff09;與ISO 26262作為汽車軟件質量保障的兩大核心標準&#xff0c;分別從過程能力與功能安全兩個維度構建了完整的開發管理體系。以下從標準定位、核心差異、協同實踐及行業價值四…

數組的應用

Java數組的基本概念 數組是Java中一種重要的數據結構&#xff0c;用于存儲固定大小的相同類型元素。數組在內存中連續分配空間&#xff0c;可以通過索引快速訪問元素。數組的聲明和初始化是使用數組的基礎&#xff0c;聲明時需要指定數據類型和數組名稱&#xff0c;初始化可以…

基礎RAG實現,最佳入門選擇(七)

增強型RAG系統的查詢轉換 采用三種查詢轉換技術&#xff0c;以提高RAG系統中的檢索性能&#xff0c;而無需依賴于像LangChain這樣的專門庫。通過修改用戶查詢&#xff0c;我們可以顯著提高檢索信息的相關性和全面性。 關鍵轉換技術 1.查詢重寫&#xff1a;使查詢更加具體和詳…

企業應用觀測中樞建設

本文來自騰訊藍鯨智云社區用戶: CanWay 運維挑戰加劇 新時代技術背景下&#xff0c;運維面臨的挑戰加劇&#xff1a; 1、業務數量日益增加、業務規模日益龐大 隨著科技發展進步、民眾生活富足&#xff0c;線下業務線上化、線上業務復雜化趨勢愈演愈烈&#xff0c;各行各業投…

Python實例題:基于邊緣計算的智能物聯網系統

目錄 Python實例題 題目 問題描述 解題思路 關鍵代碼框架 難點分析 擴展方向 Python實例題 題目 基于邊緣計算的智能物聯網系統 問題描述 開發一個基于邊緣計算的智能物聯網系統&#xff0c;包含以下功能&#xff1a; 邊緣設備管理&#xff1a;連接和管理大量物聯網…

一,python語法教程.內置API

一&#xff0c;字符串相關API string.strip([chars])方法&#xff1a;移除字符串開頭和結尾的空白字符&#xff08;如空格、制表符、換行符等&#xff09;&#xff0c;它不會修改原始字符串&#xff0c;而是返回一個新的處理后的字符串 chars&#xff08;可選&#xff09;&…

私有 Word 文件預覽轉 PDF 實現方案

私有 Word 文件在線預覽方案&#xff08;.doc/.docx 轉 PDF&#xff09; 前言 由于 .doc 和 .docx Word 文件 無法在瀏覽器中直接預覽&#xff08;尤其在私有 API 場景下&#xff09;&#xff0c;常見的 Content-Disposition: inline 并不能生效。因此&#xff0c;本方案通過…

Alpine Docker 容器中安裝包緩存與 C/C++ 運行問題

在使用 Docker 容器部署應用時&#xff0c;基于 Alpine 鏡像能帶來輕量化的優勢&#xff0c;但過程中也會遇到不少問題。今天就來分享下我在 Alpine 容器中解決安裝包緩存與 C/C 程序運行問題的經驗。 一、Alpine 安裝包緩存到本地目錄 Alpine Linux 默認使用apk作為包管理工…

[2-02-02].第59節:功能函數 - 函數基礎

服務器端操作學習大綱 一、函數基礎 需求場景 在shell腳本的編寫過程中&#xff0c;我們經常會遇到一些功能代碼場景&#xff1a;多條命令組合在一起&#xff0c;實現一個特定的功能場景邏輯、一些命令在腳本內部的多個位置頻繁出現。在這些場景的代碼量往往不多&#xff0c;…

RA4M2開發涂鴉模塊CBU(6)----RA4M2驅動涂鴉CBU模組

RA4M2開發涂鴉模塊CBU.6--RA4M2驅動涂鴉CBU模組 概述視頻教學樣品申請參考程序硬件準備接口生成UARTUART屬性配置R_SCI_UART_Open()函數原型回調函數user_uart_callback0 ()變量定義按鍵回調更新按鍵狀態DP-LED 同步長按進入配網涂鴉協議解析主循環任務調度 概述 本方案基于瑞…

MiniMax-M1: Scaling Test-TimeCompute Efficiently with I Lightning Attention

我們推出了MiniMax-M1&#xff0c;這是全球首個開源權重、大規模混合注意力推理模型。MiniMax-M1采用了混合專家系統&#xff08;Mixture-of-Experts&#xff0c;簡稱MoE&#xff09;架構&#xff0c;并結合了閃電注意力機制。該模型是在我們之前的MiniMax-Text-01模型&#xf…

Appium+python自動化(二十六) -Toast提示

在日常使用App過程中&#xff0c;經常會看到App界面有一些彈窗提示&#xff08;如下圖所示&#xff09;這些提示元素出現后等待3秒左右就會自動消失&#xff0c;那么我們該如何獲取這些元素文字內容呢&#xff1f; Toast簡介 Android中的Toast是一種簡易的消息提示框。 當視圖…

【信號與系統三】離散時間傅里葉變換

上一講我們講述了連續時間傅里葉變換&#xff0c;這一講同理來個離散時間傅里葉變換。 和上講模塊類似 5.1離散時間傅里葉變換 這一式子就是離散時間傅里葉變換對 5.2周期信號的傅里葉變換 同理&#xff0c;由于之前第一講講到&#xff1a; 可以推出&#xff1a; 舉個例子&am…

Python應用石頭剪刀布練習初解

大家好!作為 Python 初學者&#xff0c;尋找一個既簡單又有趣的項目來練習編程技能是至關重要的。今天&#xff0c;我將向大家介紹一個經典的編程練習——石頭剪刀布游戲&#xff0c;它可以幫助你掌握 Python 的基本概念&#xff0c;如條件語句、隨機數生成和用戶輸入處理等。 …

私有規則庫:企業合規與安全的終極防線

2.1 為什么企業需要私有規則庫?——合規與安全的最后防線 真實案例:2023年某跨境電商因員工泄露內部檢測規則,導致黑產繞過風控系統,損失1200萬+ 企業規則庫的三大剛需: 行業合規: 金融行業需符合《個人金融信息保護技術規范》 醫療行業需滿足HIPAA患者數據脫敏要求 業…

長尾關鍵詞優化SEO核心策略

內容概要 本文旨在系統解析長尾關鍵詞在搜索引擎優化中的核心地位&#xff0c;為讀者提供從理論到實踐的全面指南。文章首先探討長尾關鍵詞的基礎作用&#xff0c;幫助理解其在提升網站流量質量中的價值。接著&#xff0c;深入介紹精準定位低搜索量、高轉化率關鍵詞的策略&…