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

赣州市微语网络科技有限公司seo网站优化教程

赣州市微语网络科技有限公司,seo网站优化教程,桂林疫情感染人数,做网站的公司都是小公司前几天看周志明的《深入 Java 虚拟机》,感觉对 OopMap 和 RememberedSet 的介绍,看起来不太容易理解清楚。今天查了一些资料,并结合自己的一些猜想,把对这两种数据结构的理解写出来。目的只是为了简单易懂,而且多有推测…

前几天看周志明的《深入 Java 虚拟机》,感觉对 OopMap 和 RememberedSet 的介绍,看起来不太容易理解清楚。今天查了一些资料,并结合自己的一些猜想,把对这两种数据结构的理解写出来。目的只是为了简单易懂,而且多有推测,可能会有一些理解上的偏差,请选择性阅读。

总体而言:
OopMap 用于枚举 GC Roots ;
RememberedSet 用于可达性分析。

OopMap

OopMap 记录了栈上本地变量到堆上对象的引用关系。其作用是:垃圾收集时,收集线程会对栈上的内存进行扫描,看看哪些位置存储了 Reference 类型。如果发现某个位置确实存的是 Reference 类型,就意味着它所引用的对象这一次不能被回收。但问题是,栈上的本地变量表里面只有一部分数据是 Reference 类型的(它们是我们所需要的),那些非 Reference 类型的数据对我们而言毫无用处,但我们还是不得不对整个栈全部扫描一遍,这是对时间和资源的一种浪费。

一个很自然的想法是,能不能用空间换时间,在某个时候把栈上代表引用的位置全部记录下来,这样到真正 gc 的时候就可以直接读取,而不用再一点一点的扫描了。事实上,大部分主流的虚拟机也正是这么做的,比如 HotSpot ,它使用一种叫做 OopMap 的数据结构来记录这类信息。

我们知道,一个线程意味着一个栈,一个栈由多个栈帧组成,一个栈帧对应着一个方法,一个方法里面可能有多个安全点。 gc 发生时,程序首先运行到最近的一个安全点停下来,然后更新自己的 OopMap ,记下栈上哪些位置代表着引用。枚举根节点时,递归遍历每个栈帧的 OopMap ,通过栈中记录的被引用对象的内存地址,即可找到这些对象( GC Roots )。

通过上面的解释,我们可以很清楚的看到使用 OopMap 可以避免全栈扫描,加快枚举根节点的速度。但这并不是它的全部用意。它的另外一个更根本的作用是,可以帮助 HotSpot 实现准确式 GC (个人感觉这才是 OopMap 被设计出来的根本原因,提高 GC Roots Enumeration 速度更像是一个“意外的惊喜”)。关于准确式 GC 的具体内容(如:什么叫准确式 GC ?什么叫保守式 GC ?什么叫半保守式 GC ?准确式 GC 有哪些实现思路?等等),在此不一一说明,大家可以参考 找出栈上的指针/引用 这篇文章。需要说明的是,该文章的作者是 Oracle HotSpot 虚拟机团队的开发人员。

RememberedSet

RememberedSet 用于处理这类问题:比如说,新生代 gc (它发生得非常频繁)。一般来说, gc 过程是这样的:首先枚举根节点。根节点有可能在新生代中,也有可能在老年代中。这里由于我们只想收集新生代(换句话说,不想收集老年代),所以没有必要对位于老年代的 GC Roots 做全面的可达性分析。但问题是,确实可能存在位于老年代的某个 GC Root,它引用了新生代的某个对象,这个对象你是不能清除的。那怎么办呢?

仍然是拿空间换时间的办法。事实上,对于位于不同年代对象之间的引用关系,虚拟机会在程序运行过程中给记录下来。对应上面所举的例子,“老年代对象引用新生代对象”这种关系,会在引用关系发生时,在新生代边上专门开辟一块空间记录下来,这就是 RememberedSet 。所以“新生代的 GC Roots ” + “ RememberedSet 存储的内容”,才是新生代收集时真正的 GC Roots 。然后就可以以此为据,在新生代上做可达性分析,进行垃圾回收。

我们知道, G1 收集器使用的是化整为零的思想,把一块大的内存划分成很多个域( Region )。但问题是,难免有一个 Region 中的对象引用另一个 Region 中对象的情况。为了达到可以以 Region 为单位进行垃圾回收的目的, G1 收集器也使用了 RememberedSet 这种技术,在各个 Region 上记录自家的对象被外面对象引用的情况。

http://www.tj-hxxt.cn/news/30986.html

相关文章:

  • 移动端显卡天梯图2024零基础seo入门教学
  • 找柳市做网站广告推广代运营公司
  • 同城做鸡网站注册自己的网站
  • 广州增城做网站网站首页制作网站
  • 做土司的网站小红书软文推广
  • drupal wordpress网站业务推广方式
  • 建设手机网站哪个平台比较好查询关键词排名软件
  • 如何做网站首页真正免费的建站
  • 免费网站正能量不用下载平台外宣推广技巧
  • 做期货看资讯什么网站好网络营销课程论文
  • 云南建设厅网站 安全员全域seo
  • 清华大学学生工作做网站免费网站推广方式
  • 没有收款接口网站怎么做收款淘宝引流推广怎么做
  • 比较好的做网站的公司正在播网球比赛直播
  • 有链接的网站怎么做优化营商环境应当坚持什么原则
  • 蚌埠网站建设专业公司哪家好设计公司网站
  • 哈尔滨建设工程招聘信息网站深圳百度关键词排名
  • 贵州有网站的企业信息流广告公司一级代理
  • 网站logo怎么做透明网站推广的作用
  • 手表网站 二手提供seo服务
  • 郑州高端定制建设网站医疗器械龙头股
  • 建网站教程html网页制作网站
  • 蛋糕教做网站seo网络推广排名
  • 免费建网站软件下载营销网站推荐
  • 随州网站seo诊断百度seo分析工具
  • 足彩彩票网站建设怎么在百度上投放广告
  • java都是做网站吗武汉十大技能培训机构
  • wordpress页面限制抚顺seo
  • 成都网站制作公司电话免费网站推广优化
  • 苏州市建设工程信息网搜索引擎优化方法与技巧