当前位置: 首页 > news >正文

沈阳网站建设21anshansem百度竞价推广

沈阳网站建设21anshan,sem百度竞价推广,自己做的网站怎么在局域网中访问,江门市住房和城乡建设局门户网站系列文章目录 【JVM系列】第一章 运行时数据区 【JVM面试题】第二章 从JDK7 到 JDK8, JVM为啥用元空间替换永久代? 【JVM面试题】第三章 JVM分代年龄为何是15次?能设置为16吗? 大家好,我是青花。拥有多项发明专利(都是…

系列文章目录

【JVM系列】第一章 运行时数据区
【JVM面试题】第二章 从JDK7 到 JDK8, JVM为啥用元空间替换永久代?
【JVM面试题】第三章 JVM分代年龄为何是15次?能设置为16吗?



  大家好,我是青花。拥有多项发明专利(都是关于商品、广告等推荐产品)。对广告、Web全栈以及Java生态微服务拥有自己独到的见解。曾经辅导过若干个计算机专业的学生进入到软件开发行业就业。希望和大家一起成长进步。
  今天给大家带来的文章:JVM分代年龄为何是15次?能设置为16吗?希望对同学们有所帮助。

文章目录

  • 系列文章目录
  • 一、堆内存划分
  • 二、GC
  • 三、对象头的存储结构
    • 3.1 对象头
      • 3.1.1、对象分代年龄
  • 四、精简回答
    • 4.1、GC方面
    • 4.2、对象头设置
    • 4.3、从设计角度来看
  • 总结


在这里插入图片描述

Java 面试专栏
JVM区域

JVM分代年龄为何是15次?能设置为16吗?

了解堆内存划分
了解JVM垃圾回收机制
了解对象头的存储结构

一、堆内存划分

    在JVM的堆(Heap)内存里面,分为伊甸园区(Eden space)、Survivor(From、TO)区、老年代(Old generation)。
在这里插入图片描述

二、GC

    当我们在Java里面使用new关键字创建一个对象的时候,JVM会在Eden区分配一块内存来存储这个对象。当Eden区的内存空间不足的时候,就会触发Minor GC(新生代GC)进行对象回收。那些因为存在引用关系而无法回收的对象,JVM会把他们转移到Survivor区。
    Survivor内部分为From区和To区,刚从Eden区转移过来的对象会分配到From区,每经历一次Young GC,这些没被回收的对象就会在From区和To区来回移动,每移动一次,这个对象的GC年龄就加1。默认情况下GC年龄达到15的时候,JVM就会把这个对象移动到Old generation。
在这里插入图片描述


三、对象头的存储结构

    一个对象的GC年龄,存储在对象头里面。在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例 数据(Instance Data)和对齐填充(Padding)。下面我们将从这三个方面认识对象的内存布局。

3.1 对象头

    对象头主要包含两部分信息:第一类是用于存储对象自身的运行时数据,对象头的另外一部分是类型指针,即对象指向它的类型元数据的指针,Java虚拟机通过这个指针来确定该对象是哪个类的实例。
    那么我们重点讲解下用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。官方称这部分数据为 “Mark Word” ,如下图所示。
在这里插入图片描述
在这里插入图片描述

3.1.1、对象分代年龄

    其中的age(对象分代年龄),可以看到它的存储空间是4bit,4bit最大值上限是十进制的15。

这里科普一下bit:
比特是英文binary digit的缩写。位(bit) 来自英文bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只可以表示0和1两种状态(2^1)。

二进制转换十进制:

十进制二进制4bit8bit
11000100000001
210001000000010
311001100000011
4100010000000100
5101010100000101
6110011000000110
7111011100000111
81000100000001000
91001100100001001
101010101000001010
111011101100001011
121100110000001100
131101110100001101
141110111000001110
151111111100001111
1610000超出范围00010000

四、精简回答

4.1、GC方面

    在使用new创建对象时,JVM会在Eden区分配一块内存来存储这个对象。当Eden区的内存空间不足的时候,就会触发Minor GC(新生代GC)进行对象回收。那些因为存在引用关系而无法回收的对象,JVM会把他们转移到Survivor区。
    Minor GC非常频繁,因此需要把Survivor区一直回收不了的数据,放到Old区,默认是S0、S1移动达到15次(GC年龄达到15)。

4.2、对象头设置

    HotSpot虚拟机对象头里用4bit来存储GC分代年龄,而4个bit能够存储的最大值是15。从这个角度来说, JVM分代年龄之所以设置成15次,是因为它最大能够存储的数值就是15。
    因此我们说,虽然JVM提供了参数来设置分代年龄的大小,但是这个大小不能超过15,也就不能设置为16。

4.3、从设计角度来看

    从设计角度来看,当一个对象触发了最大值15次Minor GC(新生代GC),还没有办法被回收,就只能移动到Old区。
    另外,设计者还引入了动态对象年龄判断的方式来决定把对象转移到Old区,不管这个对象的GC年龄是否达到15次,只要满足动态年龄判断的依据, 也同样会转移到Old区。


总结

本章节从GC方面、对象头设置、Minor GC(新生代GC)设计角度这3个方面,解析了JVM分代年龄为何是15次。
有兴趣的同学还可以扩展下,Minor GC(新生代GC)、Full GC的频率,什么条件触发?有哪些垃圾回收算法?等等。

http://www.dinnco.com/news/26673.html

相关文章:

  • 做书的网站有哪些杭州优化seo
  • 周口做网站优化南京怎样优化关键词排名
  • 论坛网站制作费用seo站群优化
  • 贵阳做网站电话最近疫情最新消息
  • 西安网红抖音seo排名优化公司
  • 网站改版seo方案免费自己建网站
  • 网站建设制作外贸营销网站制作公司
  • 网站整体优化搜索引擎网站推广如何优化
  • 网站开发 业务流程图西安网站建设公司排行榜
  • 做类似交易猫的网站百度如何免费推广
  • 网站如何做静态化网络推广网络营销外包
  • 用asp做网站系统步骤广告推广公司
  • 怎么样百度搜到自己的网站持啊传媒企业推广
  • 厦门建设厅查询网站首页郑州网络公司
  • 网站做百度百科的好处seo站内优化包括
  • 北京养老网站开发宁波seo外包服务
  • 沈阳网站建设的公司中国seo谁最厉害
  • 免费网站模版建设设计网站都有哪些
  • 网站系统说明书百度店铺怎么开通
  • 网站上的幻灯片如何做定制网站多少钱
  • 自己做网站表白宁波seo优化项目
  • 香港网站没有icp备案大数据营销 全网推广
  • 网站一个按钮如何做跳转其他链接全网营销外包
  • 企业做网站要注意些什么东莞网站seo优化托管
  • 许昌做网站哪家好sem搜索引擎营销是什么
  • 长春电商网站建设公司新人做外贸怎么找国外客户
  • 咸宁建设网站电子商务主要学什么内容
  • 乐站_网站建设_自助建站高端网站优化公司
  • 如何做移动端网站海淀区seo多少钱
  • 空气净化器用什么网站做外贸我们公司想做网络推广