JVM堆內存中新生代晉升到老年代的條件

1. 一般年齡判斷

當對象在Eden區中經過第一次 Minor GC 后,如果仍然存活,則會被移動到 From Survivor 區,并且對象的年齡設為 1。每經過一次 Minor GC,存活下來的對象年齡加 1,若存活對象在 From Survivor 區的年齡達到閾值(一般為 15 歲),則會晉升到老年代。

虛擬機并不是永遠地要求對象年齡必須達到了-XX:MaxTenuringThreshold=15才能晉升老年代;

2. 動態年齡判斷

動態年齡判斷: Survivor區的對象年齡從小到大進行累加,當累加到X年齡(某個年齡)時占用空間的總和大于50%(可以使用-XX:TargetSurvivorRatio=?來設置保留多少空閑空間,默認值是50),那么比X年齡大的對象都會晉升到老年代;

3. 大對象

定義大對象的大小的參數是 -XX:PretenureSizeThreshold ,它表示對象在超過這個閾值時將會直接分配到老年代,而不經過新生代。這個參數的默認值可以根據具體的虛擬機版本和配置進行調整,一般情況下默認值是 0,即所有對象都將在新生代分配。

4. 空間擔保機制

執行 Minor GC 之前,會先判斷老年代的可用空間是否大于新生代的全部空間,如果大于會直接執行 Minor GC,小于會判斷老年代的可用空間是否大于 晉升到老年代的平均大小;如果小于,則直接執行 FULL GC 再進行Minor GC;如果大于則嘗試執行一次 Minor GC,在嘗試進行 Minor GC 的過程中,會看看老年代是否放得下,放不下,就先執行一次 FULL GC 然后再執行 Minor GC。

ps:以下是我整理的java面試資料,密碼是obht,感興趣的可以看看。最后,創作不易,覺得寫得不錯的可以點點關注!

鏈接:https://www.yuque.com/u39298356/uu4hxh?# 《Java面試寶典》?

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

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

相關文章

netlink原理及應用

什么是netlink netlink是一種基于網絡的通信機制,允許內核內部、內核與用戶態應用之間甚至用戶態應用之間進行通信;netlink的主要作用是內核與用戶態之間通信;它的思想是,基于BSD的socket使用網絡框架在內核和用戶態之間進行通信…

GaussDB跨云容災:實現跨地域的數據庫高可用能力

背景 金融、銀行業等對數據的安全有著較高的要求,同城容災建設方案,在絕大多數場景下可以保證業務數據的安全性,但是在極端情況下,如遇不可抗力因素等,要保證數據的安全性,就需要采取跨地域的容災方案。 …

Dell R730 2U服務器實踐3:安裝英偉達上代專業AI訓練Nvidia P4計算卡

Dell R730是一款非常流行的服務器,2U的機箱可以放入兩張顯卡,這次先用一張英偉達上代專業級AI訓練卡:P4卡做實驗,本文記錄安裝過程。 簡潔步驟: 打開機箱將P4顯卡插在4號槽位關閉機箱安裝驅動 詳細步驟: 對…

2024目前三種有效加速國內Github

大家好我是咕嚕美樂蒂,很高興又和大家見面了!截至2024年,國內訪問 GitHub 的速度受到多種因素的影響,包括網絡封鎖、地理距離、網絡帶寬等。為了提高國內用戶訪問 GitHub 的速度,以下是目前較為有效的三種加速方式&…

網絡工程師學習筆記——VRP配置命令大全

VRP是Versatile Routing Platform的簡稱,它是華為公司數據通信產品的通用網絡操作系統。它以IP業務為核心,采用組件化的體系結構,在實現豐富功能特性的同時,還提供了基于應用的可裁剪和可擴展的功能,使得路由器和交換機…

計算機網絡物理層知識點總結

本篇博客是基于謝希仁編寫的《計算機網絡》和王道考研視頻總結出來的知識點,本篇總結的主要知識點是第二章的物理層。上一章的傳送門:計算機網絡體系結構-CSDN博客 通信基礎 物理層概念 物理層解決如何在連接各種計算機的傳輸媒體上傳輸數據比特流&am…

【Kubernetes】k8s中容器之間、pod之間如何進行網絡通信?

目錄 PodKubernetes 網絡模型同一Pod上的容器之間進行通信同一Node上的不同Pod之間進行通信不同Node上的Pod之間進行通信Service參考 Pod 首先來回顧一下Pod: Pod 是用于構建應用程序的最小可部署對象。單個 Pod 代表集群中正在運行的工作負載,并封裝一…

C++初階篇----類與對象上卷

目錄 引言1.面向過程和面向對象初步認識2.類的引入3.類的定義3.1聲明與定義全部放在類體中3.2聲明與定義分離 4.類的訪問限定符及封裝4.1訪問限定符4.2封裝 5.類的作用域6.類的實例化類是對對象進行描述一個類(一個類型變量)可以實例化出多個對象 7.類對…

Day12-【Java SE進階】JDK8新特性:Lambda表達式、方法引用、常見算法、正則表達式、異常

一、JDK8新特性 1.Lambda表達式 Lambda表達式是JDK 8開始新增的一種語法形式;作用:用于簡化名內部類的代碼寫法。 注意:Lambda表達式并不是說能簡化全部匿名內部類的寫法,只能簡化函數式接口的匿名內部類。 有且僅有一個抽象方法的接口。注意:將來我們見到的大部…

分布式事務簡介

分布式事務簡介,通過組內分享學習到的知識,并進行討論。 主要內容 分布式事務簡介 分布式事務是指跨越多個數據庫或服務的一系列操作,這些數據庫或服務可能分布在網絡的不同節點上,它們共同組成一個完整的邏輯工作單元&#xf…

GEE必須會教程—蒸散發數據時間序列分析與下載

今天帶來的有關蒸散發數據的下載代碼,蒸散發數據在氣象氣候,農業干旱監測等領域應用廣泛,那么在GEE上如何方便快捷獲取蒸散發數據呢?今天跟著小編分享代碼,快來學習吧!! A.定義研究區域 //定義…

JSON-RPC 快速開始

文章目錄 JSON-RPC什么是JSON-RPCJSON-RPC java開源實現JSON-PRC go開源實現JSON-RPC 和 Restful 都屬于什么?RPC、JSON-RPC和HTTP區別 以太坊使用json-rpc?JSON-RPC和gRPCWEB開發中,使用JSON-RPC好,還是RESTful API好&#xff1f…

【前端素材】推薦優質數據統計后臺管理系統網頁Cleopatra.平臺模板(附源碼)

一、需求分析 在線后臺管理系統是指供管理員或運營人員使用的Web應用程序,用于管理和監控網站、應用程序或系統的運行和數據。它通常包括一系列工具和功能,用于管理用戶、內容、權限、數據等。下面是關于在線后臺管理系統的詳細分析: 1、功…

ssh簡介以及 windows 安裝ssh教程

SSH(Secure Shell)是一種網絡協議,用于計算機之間的加密登錄和其他安全網絡服務。通過 SSH,用戶可以安全地訪問遠程計算機,執行命令、傳輸文件等操作。SSH 使用公鑰加密技術,確保數據傳輸的安全性。本文將從…

TypeScript 哲學 - 2、Narrowing

四種類型守衛 1、truthiness narrowing 2、 3、 4、 control flow analysis

C語言:結構體(自定義類型)知識點(包括結構體內存對齊的熱門知識點)

和黛玉學編程呀,大家一起努力呀............. 結構體類型的聲明 回顧一下 struct tag { member-list; }variable-list; 創建和初始化 我們知道,在C語言中,對于一些數據是必須初始化的,但是結構體怎么創建并且初始化呢&#xff1…

【計算機網絡】TCP 如何實現可靠傳輸

TCP通過三次握手建立連接,四次揮手釋放連接,確保連接建立和連接釋放的可靠。 序列號、檢驗和、確認應答信號、重發機制、連接管理、窗口控制、流量控制、擁塞控制 標準回答 可靠傳輸就是通過TCP連接傳送的數據是沒有差錯、不會丟失、不重復并且按序到達的…

springboot+vue+mysql項目使用的常用注解

實體類常用注解 Data Data 是一個 Lombok 提供的注解&#xff0c;使用 Data 注解可以簡化代碼&#xff0c;使代碼更加簡潔易讀。 作用&#xff1a;自動為類生成常用的方法&#xff0c;包括 getter、setter、equals、hashCode 和 toString 等需要加Lombok的依賴 <depende…

rk3568-一種基于wifi的網絡環境搭建方案

前言&#xff1a; PC--Ubuntu--開發板 三者之間的網絡互相ping通很重要&#xff0c;尤其是ubuntu和開發板互ping成功最關鍵&#xff0c;關系到nfs&#xff0c;tftp等常用的開發手段。現在大多數開發板都帶有wifi芯片&#xff0c;現在提供一種方案可以三個設備無線地搭建網絡環境…

Open3D0.14.1編譯、安裝、demo使用教程

寫在前面 本文內容 Open3D在0.15版之前&#xff0c;沒有提供編譯好的包&#xff0c;要使用C版本必須自己編譯&#xff0c;本文是Open3D0.14.1在Windows下和Linux(Ubuntu1804)下的編譯、使用教程&#xff1b; Open3D其他版本的編譯和使用相關教程見 各個版本的Open3D、PCL的編譯…