网站首页 > 精选教程 正文
前置知识
- Minor GC:新生代收集,又称为Young GC;
- Major GC:老年代垃圾收集,又称为Old GC;
- Full GC:整个java对和方法区的垃圾收集;
gc的年龄是指对象在垃圾回收收集(gc)过程中的年龄,那么在了解它之前,我首先看看,jvm的内存分配策略是什么样的。
内存分配策略
对象出生在Eden区,当Eden区空间不足时会触发Minor GC,并将存活的对象移动至Survivor区中,同时将对象的年龄设为1,由于回收的操作比较频繁,因此每一次的Minor GC都会使对象的年龄信息增加1,当年龄达到默认的15次时,就会晋升至老年代,可以通过参数来调整,这里有个前提,如果对象是大对象(超过Eden的一半)的话,会直接分配中至老年代。
在Survivor中,相同年龄的所有对象大小总和大于Survivor空间的一半时,年龄大于或者等于该年龄的对象会直接进入到老年代,无需年龄达到默认要求。
因为对象头记录位只有4位,因此1111的值为15,多以gc的年龄最大为15次
对象信息
对象头信息包括了Mark Word、?类型指针(?Klass Pointer)?,?以及对于Java数组对象还包括数组长度。?
- Mark Word:?用于存储对象自身的运行时数据,?如快速定位的哈希码、?GC分代年龄、?锁状态标志、?线程持有的锁、?偏向线程ID、?偏向时间戳等。?Mark Word被设计成一个非固定的数据结构,?以便在极小的空间内存储尽量多的信息,?它会根据对象的状态复用自己的存储空间。
- 类型指针(?Klass Pointer)?:?指向对象的类的元数据指针,?虚拟机通过这个指针确定这个对象是哪个类的实例以及类的字段、?方法信息。?
- 数组长度:?如果对象是Java数组,?对象头中还有一块用于记录数组长度(?Array Length)?的数据,?因为普通对象可以通过Java对象元数据确定大小,?而数组对象不可以。
因此对于以上问题的答案,我们分析可知,对象的GC年龄存储在对象头信息的Mark Word中。
- 上一篇: JVM基础学习 jvm入门到精通
- 下一篇: 为什么28岁不能学java? 28岁开始学编程晚吗
猜你喜欢
- 2024-11-10 为什么28岁不能学java? 28岁开始学编程晚吗
- 2024-11-10 JVM基础学习 jvm入门到精通
- 2024-11-10 Java-对象到底占多少个字节?计算规则是什么?
- 2024-11-10 浅谈JAVA中的基本变量 java常用变量
- 2024-11-10 大数据必学Java基础(十三):基本数据类型的转换
- 2024-11-10 Java码农35岁之后只能送外卖? 我的世界java
- 2024-11-10 这些Java基础知识,诸佬们都还记得嘛(学习,复习,面试都可)
- 2024-11-10 2021-01-03:java中,描述一下什么情况下,...
- 2024-11-10 零基础学Java之数据类型与变量(上集)
- 2024-11-10 JAVA基础总结:变量和数据类型 java入门变量与数据类型第一关
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)