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

山东网站备案 论坛建站推广网站排名

山东网站备案 论坛,建站推广网站排名,seo入门讲解,内容营销的价值是什么G1是一款既收集新生代又收集老年代的收集器#xff0c;使用它可以实现整个java堆的gc#xff0c;它有两个非常重要的新概念#xff1a;region和remember set#xff08;简称rset#xff09;。 region是啥#xff1f; G1中虽然保留了新生代和老年代的概念#xff0c;但是…        G1是一款既收集新生代又收集老年代的收集器使用它可以实现整个java堆的gc它有两个非常重要的新概念region和remember set简称rset。 region是啥 G1中虽然保留了新生代和老年代的概念但是不像其他收集器那样使用物理内存隔离来区分新生代和老年代在G1中新生代和老年代实现的是逻辑上的内存隔离G1将整个的java堆最多分成2048个大小相等的region每个region的大小为整堆实际大小/2048在1-32M之间并且为2的N次幂。对象是存储在region中的有四种不同类型的regionE、S、O、H分别对应着eden区的region、survivor区的region、老年代的region和h区的regioneden区的region用于存储新被创建的非巨型对象survivor区的region用于存储从eden区复制过来的年龄还未达到15的存活对象老年代的region用于存储从新生代晋升过来的老化对象这些对象大多都是经过了多次gc仍然存活的对象对象的存活概率非常大h区用于存储巨型对象那么什么是巨型对象呢巨型对象是指体积庞大需要占用内存比较大的对象在G1中对于巨型对象的定义是体积超过了一个region的容量的50%以上的对象。在其他的收集器实现中巨型对象在被创建之后直接存放在老年代在G1中巨型对象在被创建之后是存放在h区的region中的一个巨型对象会占用一个或多个连续的h区region。因为在G1中新生代和老年代实现的是逻辑内存的隔离所以G1也不要求相同类型的region必须相邻。在G1中对象被保存在region中所以在gc的时候也是对region中的对象执行可达性分析在可达性分析过程中用到了一个新的概念rsetG1收集器会用gc roots对象配合着rset记录来实现对象的可达性分析那么什么是rset呢 rset是啥 rset是在G1收集器中使用的一个新的数据结构它是一个列表G1收集器会为每一个region创建一个rsetrset中记录的是其他老年代region中的对象对于此region中对象的引用为啥要记录这些引用呢我们知道在其他的收集器中当去执行对象的可达性分析时需要沿着gc roots对象的引用链去查找对象根据引用关系判断对象是否可达而这些引用关系需要通过整堆扫描的方式才能获得可整堆扫描耗时太长为了在这一块儿进行优化G1引入了rset去将引用关系记录下来这样在可达性分析阶段就可以用扫描rset来代替整堆扫描了大大提高了收集性能。 G1的收集模式是怎样的呢 G1支持两种收集模式young gc和mixed gc混合收集。young gc是对于新生代region的gc混合gc是对于所有新生代region和部分老年代region的gc。 什么时候触发young gc呢young gc并非是一遇到eden内存不足以存储新对象就立即触发的初次遇到eden区的region不足以存储新对象时G1首先做的是为eden区分配新的region因为此时新生代的region占比仅为整堆内存的5%G1允许继续为eden区分配新的region但是新生代占比不能超过60%当占比接近60%时eden区的region内存不足就会触发young gc了。young gc在执行的时候会利用gc roots对象和rset记录对新生代的region中的对象执行可达性分析并且将存活对象拷贝到空闲的s区region中去当然在这个过程中要完成存活对象年龄的增长如果有哪个对象的年龄达到了15那这个对象会被晋升到老年代的region中存储如果eden区的region中有大量的对象存活了下来而没有足够的s区region去存储它们也会有部分对象被直接存储到老年代region中。存活对象复制完毕后将eden区的region以及只包含着垃圾的那些s区region清空。 随着程序的执行不断有对象从新生代晋升到老年代中老年代的region也慢慢被对象堆积起来当老年代region占用达到了设置的整堆比阈值默认45%时就要触发混合gc了混合gc是对于全部的新生代region以及部分老年代region的收集为什么是部分老年代而不是全部老年代呢这是因为G1收集器另外一个新特性支持可预测的STW时间设置G1收集器支持我们设置在m毫秒时长内可用于STW的最大时长n的值G1收集器需要在我们限定的这个时长内完成gc所以它不能收集全部的region只能收集部分region那么收集哪一部分region呢G1会对老年代所有region中的对象执行可达性分析分析完成之后所有region中的垃圾堆积情况就确定了然后会对这些region按照回收价值和回收成本做一个优先级排序有着更高的回收价值和更低的回收成本的region总会具有更高的优先级而混合gc中被收集的也是具有最高优先级的那一部分region。 G1收集器同CMS收集器一样也追求更短的STW时间所以它也是并发收集器的实现它的收集过程也分为四个步骤 1、初始标记初始标记是去标记gc roots对象以及被gc roots对象直接关联的对象这个过程要暂停用户线程会有短暂的STW时间 2、并发标记并发标记是根据gc roots对象以及rset记录去标记其他对象这个过程gc线程与用户线程并发虽然耗时较长但是用户线程不用暂停没有STW时间 3、重新/最终标记因并发标记这一步用户线程保持执行那么难免在执行中发生对象引用关系的变化而造成多标和漏标的问题因为漏标导致的结果很严重会让不该被回收的对象被gc回收掉而造成程序错误所以需要有重新标记过程。在并发标记过程中如果有个白色对象被新引用了这个引用会被记录下来在重新标记阶段去为它标记颜色即重新标记是为了做标记修正。这一步需要暂停用户线程会有STW时间但是这一步耗时非常短 4、筛选回收按照优先级筛选部分region进行回收这一步虽然会暂停用户线程但是会有多个gc线程并行回收STW时间很短。 G1收集器的优点 1、并行与并发G1收集器充分利用多核CPU的优势让用户线程与gc线程并发缩短了STW时间实现了更高的性能 2、分代收集G1收集器保留了分代的概念既可以收集新生代又可以收集老年代无需其他收集器配合就能管理整个的java堆 3、没有内存碎片问题G1收集器从局部看用的是复制算法从整体看用的是标记-整理算法没有CMS收集器的内存碎片问题 4、可预测的STW时间G1收集器支持可预测的STW时间模型设置让我们可以实现更好的用户线程暂停管理。
http://www.zqtcl.cn/news/472550/

相关文章:

  • 网站系统维护一般多久电商关键字优化
  • 孝感市建设局网站宁波seo网络推广价格
  • 百度商桥网站网络编程技术试题
  • 设计素材网站排名网站建设网站软件有哪些内容
  • 互联网兼职做网站维护wordpress评论微信通知
  • 合肥瑶海区网站建设方案长沙网站 建设推广世云网络
  • wordpress 挂码seo推广公司哪家好
  • 高端 网站设计公司wordpress添加投稿功能
  • 长沙 网站设计 公司价格江苏专业网站建设费用
  • 做的好的手机网站有哪些内容手机怎么做app详细步骤
  • net网站开发参考文献c++能不能作为网页开发语言
  • 我公司让别人做网站了怎么办厦门logo设计公司
  • 闸北专业做网站怎么判断网站优化过度
  • 搭建网站seowordpress重新安装如何做
  • 网站设计优化重庆教育建设有限公司网站
  • 域名注册网站查询手工制作视频教程简单又漂亮
  • 书画院网站源码网站百度指数
  • 网页设计与网站开发第三版课后答案网络运营商是干嘛的
  • wordpress分类目录网站主题自己做营销型网站
  • 简述网站推广的五要素seo排名软件怎么做
  • 做网站能做职业吗织梦如何做几种语言的网站
  • 手机网站定制咨询如何修改网站
  • 长沙大型网站建设公司建站工作室源码
  • 找设计方案的网站专注南昌网站建设
  • UE做的比较好的网站汕头网站关键词优化教程
  • 做羞羞的事情网站广州番禺招聘网最新招聘信息
  • 网站基础开发成本网站建设策划包括哪些内容
  • 商务网站建设哪家好绍兴网站建设做网站
  • 网站域名管理东莞网页设计和网页制作
  • 网站建设与制作报价网站app制作