Java的堆如何分代的?

前言:

java对象一般都是朝生夕死,也有部分对象是一直存在的。两种对象如何都放在一起,进行垃圾回收的时候效率较低。所以通过将不同时期的对象放在不同的内存池中,节省垃圾回收的时间,提高性能。

组成:

新生代和老年代,新生代存放新创建的对象,老年代存放长期存在的对象。

新生代的组成:

1、年轻区(Eden)

2、Survivor区(From Survivor 、 To Survivor)

两者之间的空间大小默认的比例是8:2,可通过-XX:SurvivorRatio调整

两者之间的关系:

1、很多对象都是创建在Eden区,Eden区内存用完的时候,会触发GC,非活对象会被标记死亡,活着的对象移动到Survivor区

2、Survivor内存也使用完的话,对象会被移动到老年代

老年代:

老年代的对象存活很久,GC回收会很慢

对象的分代晋升:

正常情况下,对象在新生代进行分配,当Eden区内存耗尽,无法分配新的对象时候,会触发YoungGC进行垃圾回收,没有被回收的对象搬运到Survivor区,这个过程叫做晋升。 

对象也会晋升到老年代,触发的条件主要是:年龄和对象的大小 

1、躲过15次GC,每次垃圾回收的时候,没有被回收掉的对象年龄就会+1,累计到15次(jdk1.8默认),就会进入到老年代。

2、动态的年龄判断:

     如果Survivor空间中小于等于某个年龄的所有对象的大小总和大于Survivor空间的一半时,就把大于等于这个年龄的对象都晋升到老年代

3、大对象直接进入到老年代;-XX:PretenureSizeThreshold 设置大对象的临界值 默认为0

永久代:

1.8之后,被重构为元空间(MetaSpace)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HUAWEI华为MateBook D 14 2022款 12代酷睿版集显(NbF-16)工厂模式原厂Windows11预装OEM系统,含F10智能还原功能

系统下载链接:https://pan.baidu.com/s/1kgJvwSq5eOdme7J9PDXIxQ?pwdxvz8 提取码:xvz8 华为笔记本电脑原装出厂系统工厂安装包,含F10功能、系统自带所有驱动、系统属性专属联机支持标志、Office办公软件、华为电脑管家等预装程序&#xf…

刷怪日记-01背包理论问题(二维矩阵实现)

01背包理论问题(二维矩阵实现) 题目 解题思路 确定dp数组以及下标的含义 本题采用二维数组进行解题,那么dp[i] [j]表示从下标0-i的物品任意选择,放进容量为j背包,价值总合最大是多少 i 表示物品第几个物品,j 表示背包容量大小 …

Spring MVC PathPatternMatchableHandlerMapping原理解析

在Spring MVC框架中,路由机制是实现HTTP请求到具体处理器方法映射的核心。PathPatternMatchableHandlerMapping是Spring 5之后引入的一个新特性,它基于PathPattern来提供更为灵活和强大的URL路径匹配能力。与传统的RequestMappingHandlerMapping相比&…

ORACLE 如何使用dblink实现跨库访问

dbLink是简称,全称是databaselink。database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是database link是单向的连接。在创建dat…

LeetCode刷题---填充每个节点的下一个右侧节点指针 II

题解:LeetCode题解 解题思想: 通过创建辅助指针来解决该问题 当当前节点cur不为空的时候,创建辅助节点dummy,使其一直作为每一层的第一个节点的前一个节点。 创建辅助指针pre,pre初始指向dummy,之后通过pre来填充当前层…

2.2 评估方法 机器学习

我们若有一个包含m个样例的数据集,若我们既需要训练,也需要测试,我们该如何处理呢?下面是几种方法: 2.2.1 留出法 “留出法”直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作…

双指针算法(1)

目录 283.移动零 一、题目描述 二、思路解析 三、代码 1089.复写零 一、题目描述 二、思路解析 三、代码 202.快乐数 一、题目描述 二、思路解析 三、代码 11.盛水最多的容器 一、题目描述 二、思路解析 三、代码 283.移动零 一、题目描述 OJ题目链接&#xf…

Linux升级openssl

运行acme.sh更新SSL证书时出现报错:Register account Error 具体错误为: Register account Error: {"type":"urn:ietf:params:acme:error:malformed","status":400,"detail":"[External Account Binding]…

python基于django的药品进销存管理系统elsb2

本系统是通过面向对象的python语言搭建系统框架,通过关系型数据库MySQL存储数据。使用django框架进行药店药品的信息管理,用户只需要通过浏览器访问系统即可获取药店药品信息,并可以在线管理,实现了信息的科学管理与查询统计。本文…

OpenAI 大声朗读出来

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【MySQL】not in遇上null的坑

今天遇到一个问题: 1、当 in 内的字段包含 null 的时候,正常过滤; 2、当 not in 内的字段包含 null 的时候,不能正常过滤,即使满足条件,最终结果也为 空。 测试如下: select * from emp e;当…

2024全国水科技大会之国际合作与新技术、新产品推介会

召集人:中华环保联合会水环境治理专委会 此论坛主要为筛选新技术、新产品,入选企业后续可参与到我会7月的国际考察中,可为企业推荐国际项目合作! 一、会议背景 为积极应对“十四五”期间我国生态环境治理面临的挑战,加…

剑指offer面试题27 二叉搜索树与双向链表

考察点 树的遍历,双向链表知识点 题目 分析 题目要求把一颗二叉搜索树转换成排序的双向链表,二叉搜索树和双向链表一样都有2个指针,唯一的区别就是对于树来说一个结点具有左子树右子树,对于双向链表来说是直接前驱和直接后驱。…

【nodejs】“__dirname is not defined”错误修复

▒ 目录 ▒ 🛫 问题描述环境 1️⃣ 原理CommonJS vs ESM错误原因 2️⃣ 禁用 ESM 模式并改用 CommonJS方案一:项目方案二:单文件 3️⃣ 在 ESM 模式下自实现__dirname📖 参考资料 🛫 问题 描述 从网上找了一份代码&am…

x86 Ubuntu上编译eudev给龙芯loongarch64架构主机使用

1、下载eudev库eudev-master.zip,链接:eudev库官方地址 2、下载龙芯的交叉编译工具:loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.2.tar.xz,链接:龙芯交叉编译官方地址 3、交叉编译器环境搭建 (1)、…

.bat文件与python

.bat文件通常使用文本编辑器(如记事本)来创建和编辑。你只需要在文本文件中编写一系列命令和指令,然后将文件保存为.bat扩展名即可。这样,Windows操作系统就可以识别它为批处理脚本文件。 .bat文件是由Windows操作系统识别的批处理…

InfluxDB SHOW SERIES语句按照什么顺序返回?

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言样例SHOW SERIES比较原理结论结束语 引言 influxdb的计算引擎为了做到自底而上的…

嵌入式 Linux 开发的基本概念 及 学习路线

原文链接:https://www.cnblogs.com/DSCC2020/p/13787321.html 1.嵌入式 Linux 开发的基本概念 1.1嵌入式 Linux 的组成 嵌入式 Linux 系统,就相当于一套完整的 PC 软件系统,如下图所示: 1.2嵌入式 Linux 的日常开发流程 Bootloa…

IDEA稀奇古怪问题的解决方案

idea在电脑死机重启后,启动项目报错 尝试了各种办法,重新导入项目,删除.idea文件重新导入,把本地代码删除重新pull下来再次导入,均无法解决。而且代码在eclipse中可以正常启动,遂排除代码和网络环境原因。…

探索c++——了解c++的魅力

前言:c是一门既面向对象又面向过程的语言。 不同于java纯粹的面向对象和c纯粹的面向过程。 造成c该特性的原因是c是由本贾尼大佬在c的基础上增添语法创建出来的一门新的语言。 它既兼容了c, 身具面向过程的特性。 又有本身的面向对象的特性。 面向对象和…