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

jvm打破砂锅问到底- 为什么要标记或记录跨代引用

  1. 为什么要标记或记录跨代引用.
    ygc时, 直接把老年代引用的新生代对象(可能是对象区域)记录下来当做根, 这其实就是依据第二假说和第三假说, 强者恒强, 跨代引用少(存在互相引用关系的两个对象,是应该倾
    向于同时生存或者同时消亡的).

拿ygc老年代跨代引用对象当做根, 首先就免去了直接直接扫描老年代, 因为要遍历标记哪个新生代的对象存活, 必须从根开始找, 那假如新对象是通过老对象关联着根的, 这种情况是根可达. 这意味着要访问完所有老年代对象以及他的引用关系, 才能枚举刚才的根可达情况. 这显然很耗时, 这就是在fullgc遍历. 因此记录跨代引用就是为了避免这种情况. 造成的好处就是不用罗列根可达对象们的时候, 只用在新生代区域进行就行了, 不用管老年代对象, 免去其判断. 将这判断交给跨代引用的维护. (空间换时间), 这样ygc停顿时间是较短的

(是以下两条的讨论, 第一:弱分代假说: 弱者居多, 弱者就是指朝生夕死,
第二: 强分代假说: 强者恒强, 一个对象如果能持久一段gc次数而不消亡, 他突然消亡的可能性就很小, 或者说越难以消亡)

http://www.lryc.cn/news/192347.html

相关文章:

  • 小程序长期订阅
  • Studio One6.5中文版本版下载及功能介绍
  • 07-Zookeeper分布式一致性协议ZAB源码剖析
  • 云原生安全应用场景有哪些?
  • Step 1 搭建一个简单的渲染框架
  • Excel 插入和提取超链接
  • 基础架构开发-操作系统、编译器、云原生、嵌入式、ic
  • C++-Mongoose(3)-http-server-https-restful
  • git多分支、git远程仓库、ssh方式连接远程仓库、协同开发(避免冲突)、解决协同冲突(多人在同一分支开发、 合并分支)
  • ChatGPT或将引发现代知识体系转变
  • 【爬虫实战】用pyhon爬百度故事会专栏
  • 焦炭反应性及反应后强度试验方法
  • 链表(3):双链表
  • 【TES720D】基于复旦微的FMQL20S400全国产化ARM核心模块
  • Python 列表切片陷阱:引用、复制与深复制
  • macbook电脑删除app怎么才能彻底清理?
  • 【数据结构】二叉树--链式结构的实现 (遍历)
  • reids基础数据结构
  • gitlab 维护
  • ABB机器人RWS连接方法
  • Spring Boot的循环依赖问题
  • postgresql|数据库|恢复备份的时候报错:pg_restore: implied data-only restore的处理方案
  • Elasticsearch:使用 Langchain 和 OpenAI 进行问答
  • 安全巡检管理系统—隐患排查治理
  • 第9期ThreadX视频教程:自制个微秒分辨率任务调度实现方案(2023-10-11)
  • C++ 11 lamdba表达式详解
  • Linux运行环境搭建系列-Zookeeper安装
  • vscode利用lauch.json和docker中的delve调试本地crdb
  • 【java|golang】多字段排序以及排序规则
  • 腾讯云 轻量云 上海 VPS 测评