剩余 大小 查看内存_JVM的内存分配策略以及进入分代的条件

86bd01c8fdb229d9a762c97ae5d7a1b0.png

JVM的参数和知识点太多啦,记录下来,供自己随时回顾。

  1. java对象什么时候进入年轻代(新生代)?
  2. java对象什么时候进入老年代?
  3. 对象优先在Eden分配
  4. 大对象直接进入老年代
  5. 空间分配担保机制

java对象什么时候进入年轻代(新生代)?

当对象首次创建时, 会放在新生代的eden区, 如果不被GC回收,会一直在eden区

java对象什么时候进入老年代?

  1. 当新生代的对象进行多次YGC之后还一直存在并且达到设置的周期(默认15),会进入老年代。参数:-XX:MaxTenuringThreshold=15
  2. 一个Survivor区域中对象大小的总和加起来超过该区域50%,那么大于或者等于这个对象年龄的对象就会进入到老年代。这也就是JVM的动态对象年龄判断。 举个栗子:参数-XX:TargetSurvivorRatio=50 默认50%

对象优先在Eden分配

对象首先进入Eden区域,Eden区域满时会进行一次YGC,把存活对象放入S1区,再对Eden区域进行垃圾回收。第二次Eden区域满时进行第二次YGC,此时S1区的存活对象和Eden的存活对象被复制到S2区,Eden区的垃圾对象再次被回收

设置参数:-XX:SurvivorRatio=8

设置Eden区比例为80%,S1 和 S2 各为10%;若设置为5,Eden:两个S区 为5:1:1

大对象直接进入老年代

为了避免对象在Eden区、S1、S2区进行大量的内存复制,当大对象进入时,直接进入老年代。 配置参数:-XX:PretenureSizeThreshold=1M 当对象大于1M时,直接进入老年代

空间分配担保机制

在执行任何Minor GC(YGC)之前,虚拟机会先检查老年代最大可用的连续空间是否大于新生代对象总空间,如果这个条件成立,那么Minor GC可用确保是安全的,如果不成立,则虚拟机会查看HandlePromotionFailure设置值是否允许担保失败,如果允许,会继续检查之前历次Minor GC中晋升到老年代的平均对象大小是否<老年代最大可用的连续空间,如果小于,将尝试进行一次Minor GC,这次GC是由风险的,如果大于或者HandlePromotionFailure设置为false,那么这时要进行一次Full GC,为可能晋升到老年代的对象腾出空间。

风险指的是什么?指的是极端情况下MGC之后所有对象依旧存活,对象全部要进入老年代,如果老年代空间不够用,就会触发一次Full GC。如果Full GC之后老年代空间还是不够用,会触发OOM。

这块太绕了。。简单一点

          if(需要进行一次Minor GC){if(老年代可用空间 > 新生代所有对象大小){执行一次Minor GC;}else{if(-XX:-HandlePromotionFailure=true){if(老年代连续可用空间>之前晋升到老年代所有大小的平均值){执行Minor GC;/*执行之后有3种情况:1.剩余对象大小小于S区大小,对象进入S区2.剩余对象大小大于S区,对象进入老年代3.剩余对象大小大于S区,也大于老年代,执行一次Full GC。如果执行Full GC之后还是放不下晋升对象,报错OOM*/}else{执行Full GC;执行Minor GC;}}}}

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

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

相关文章

Arduino的串口结束符及串口缓冲区

文章目录1.深入理解缓冲区和Serial.available()&#xff1a;2.深入理解串口结束符3.验证结论&#xff1a;1.深入理解缓冲区和Serial.available()&#xff1a; 运行下面的代码&#xff0c;我发现如果不在串口输入任何数字&#xff0c;就会一直显示“no”&#xff0c;输入一个数…

android 圆角边框边框渐变,支持边框、圆角、渐变色、透明度的GradientButton

最近在项目中发现好多Button背景颜色相同&#xff0c;但圆角大小不等的Button&#xff0c;这样就得写一大堆的shape或者selector&#xff0c;不便于管理及后期维护&#xff0c;于是乎变想能不能写一个支持边框、圆角、渐变色、透明度的万用Button呢。为了能够兼容button自带的属…

鸿蒙ide如何运行,深入浅析华为鸿蒙IDE安装与Hello World

一、系统安装1. 到官网下载HUAWEI DevEco Studio2. 安装二、创建项目创建项目目前还没有手机选项&#xff0c;所以我先选择一个电视&#xff1a;IDE的环境看起来和idea差不多&#xff0c;应该比较容易上手。从“关于”里也可以看到&#xff0c;确实是基于IDEA开源版本开发的。我…

中快捷搜索_同事用1分钟,我用半小时,原来是因为这8个Word快捷键,秒杀一切办公技巧...

同事用1分钟&#xff0c;我用半小时&#xff0c;这8个Word快捷键&#xff0c;秒杀一切办公技巧​mp.weixin.qq.com文&#xff5c;王羽卒今天给小伙伴们分享几个实用又有效的快捷键&#xff0c;帮助快速完成工作&#xff0c;同事用了半小时&#xff0c;你1分钟就能解决哟&#x…

荣耀x10max能不能升级为鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...

4月24~26日&#xff0c;华为将召开开发者大会&#xff0c;届时手机使用的鸿蒙系统将正式上线&#xff0c;华为和部分荣耀手机将会首先支持。其实&#xff0c;早在2月22日的华为Mate X2的发布会上&#xff0c;余承东就说过4月发布鸿蒙OS。华为并不想推出鸿蒙系统&#xff0c;如果…

android 7.0新增控件,自定义Android控件,封装Arcgis for Android测距测面积工具控件

控件的功能包括&#xff0c;测距、测面积、撤销、恢复、清除、完成六个功能。测距&#xff1a;在地图上绘制线段进行长度测量测面积&#xff1a;在地图上绘制一个面&#xff0c;进行面积测量撤销&#xff1a;撤销到上一步绘制&#xff0c;只能撤销未完成的测量恢复&#xff1a;…

多媒体分析与理解_如何设计一个出色的数字多媒体展厅?

展厅设计方案是了解每个多媒体设备的应用方法&#xff0c;那么如何让设备跟展厅结合一起&#xff0c;展示出我们想要的科技效果&#xff0c;核心就是用户体验度。今天华南数字科技的小编就为您介绍下数字多媒体展厅对用户体验方面的几个重点要素。1、细节展示不论多前卫的多媒体…

gradient设置上下渐变_图解CSS: CSS渐变

CSS的渐变主要分布在 conic-gradient()和repeating-conic-gradient()两个属性。在CSS中&#xff0c;CSS的渐变相当于图像&#xff0c;我们可以使用线性渐变(linear-gradient()和repeating-linear-gradient())、径向渐变(radial-gradient()和repeating-radial-gradient())和锥形…

2021泗阳致远中学高考成绩查询,2021高考成绩什么时候发布?可通过哪些途径查询?...

3、安徽省高考成绩预计将于6月23日公布各批次录取分数线和高考成绩&#xff0c;考生可通过安徽省教育招生考试院自行查分&#xff1b;4、湖南高考成绩将于6月25日左右公布&#xff0c;本科不再分一二三批&#xff0c;考生可通过湖南教育政务网、湖南省普通高校招生考试考生综合…

mysql数据库的字符集_mysql数据库中字符集乱码问题原因及解决

前言有的时候我们在查看数据库数据时&#xff0c;会看到乱码。实际上&#xff0c;无论何种数据库只要出现乱码问题&#xff0c;这大多是由于数据库字符集设定的问题。下面我们就介绍一下&#xff0c;数据库的字符集的设定及乱码问题的解决。mysql数据库的字符集直白的说&#x…

1主5从mysql数据库_MySQL主从复制虽好,能完美解决数据库单点问题吗?

一、单个数据库服务器的缺点数据库服务器存在单点问题&#xff1b;数据库服务器资源无法满足增长的读写请求&#xff1b;高峰时数据库连接数经常超过上限。二、如何解决单点问题增加额外的数据库服务器&#xff0c;组建数据库集群&#xff1b;同一集群中的数据库服务器需要具有…

惠普z6计算机进不去桌面,HP Z6 桌面工作站 | HP® HK 惠普香港

Intel、Thunderbolt 及 Xeon 均為 Intel Corporation 於美國及/或其他國家或地區的商標。Microsoft 及 Windows 為 Microsoft Corporation 於美國及/或其他國家或地區的註冊商標或商標。NVIDIA 是 NVIDIA Corporation 在美國及其他國家或地區的商標及/或註冊商標。USB Type-C™…

mysql定义条件和处理_mysql sql存储过程条件定义与处理

一、条件定义DECLARE condition_name CONDITION FOR condition_valecondition_value:sqlstate[value] sqldata_value |mysql教程_error_code二、条件处理DECLARE htype HANDLER FOR cond_value[...] sp_statementhandtype_value:sqlstate [value] saltate_value|contentname|sq…

长沙医学院学位计算机考试内容,湖南长沙医学院2017年9月计算机等级考试报名时间...

长沙医学院2017年下半年第49次全国计算机等级考试(以下简称NCRE)将于2017年9月23至25日举行。为做好本次考试报名及相关考务工作&#xff0c;现将有关事项通知如下&#xff1a;一、报名时间&#xff1a;2016年6月7日—2016年6月18日&#xff0c;逾期不接受任何理由的补报名。二…

mysql dnslog_dnslog小技巧

一、dnslog利用场景主要针对无回显的情况。Sql-BlindRCESSRFRFI(Remote File Inclusion)二、原理将dnslog平台中的特有字段payload带入目标发起dns请求&#xff0c;通过dns解析将请求后的关键信息组合成新的三级域名带出&#xff0c;在ns服务器的dns日志中显示出来。三、案例展…

2019哈佛计算机专业录取,2019哈佛大学早申请录取数据公布 录取率再降1个点仅为13.4%...

出结果了&#xff0c;出结果了&#xff0c;作为美国在全球范围内最负盛名的哈佛大学&#xff0c;与近日公布2019美国本科申请提前录取的相关数据。今年哈佛大学本科学院向6,968位在2023届提前录取轮次申请人中的935位发出了录取通知&#xff0c;申请录取率约为13.4%&#xff0c…

mysql中pi是什么意思_MySQL 基础知识与常用命令

MySQLMySQL是一种开放源代码的关系型数据库管理系统(RDBMS)&#xff0c;MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL在过去由于性能高、成本低、可靠性好&#xff0c;已经成为最流行的开源数据库&#xff0c;因此被广泛地应用在Inte…

科幻计算机类小说,短篇科幻小说推荐 | 黄金时代的五部科幻杰作

编注&#xff1a;本文是少数派读书月「我读过的好书」征文活动的入围文章。本文仅代表作者本人观点&#xff0c;少数派对标题和排版略作调整。想了解如何参与本次读书征文&#xff0c;赢取各种丰厚奖品&#xff0c;你可以 点此查看 活动规则和奖品清单。文章包含五个故事的情节…

计算机中丢失msc,mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dll

mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dllmscvr120.dll是系统的非常重要的一个文件&#xff0c;相信很多的人都是遇到文件丢失的情况&#xff0c;这个时候就需要你在下载一个dll文件使用了&#xff01;现在就为大家提供最新的dll文件下载&#xff0c;需要的可以看…

mysql解压缩版配置_MySQL 5.6 for Windows 解压缩版配置安装

1、MySQL安装文件分为两种&#xff0c;一种是msi格式的&#xff0c;一种是zip格式的。如果是msi格式的可以直接点击安装&#xff0c;按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示)&#xff0c;一般MySQL将会安装在C:\Program Files\MySQL\MySQL Server 5.6 该…