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

网络营销推广的方式和特点推推蛙seo顾问

网络营销推广的方式和特点,推推蛙seo顾问,长春网站网站建设,建立一个网站多少钱这部分内容主要是为了稍后介绍各款垃圾收集器时做前置知识铺垫,如果对这部分内容感到枯燥或者疑惑,可以先放下看,等后续遇到要使用它们的实际场景、实际问题时再结合问题,再回来阅读和理解。 记忆集和卡集 前面在分代收集理论那…

这部分内容主要是为了稍后介绍各款垃圾收集器时做前置知识铺垫,如果对这部分内容感到枯燥或者疑惑,可以先放下看,等后续遇到要使用它们的实际场景、实际问题时再结合问题,再回来阅读和理解。

记忆集和卡集

前面在分代收集理论那一节稍微讲到对象不是孤立的,对象之间存在跨代引用。如果还是不大明白,看我下面这个例子:老年代引用年轻代

public class ClassRoomLocalCache {// 静态变量 map,以及 map 中引用的 ClassRoom 类型变量大概熬过默认的 15 次垃圾收集,都会晋升到老年代private static final Map<String,ClassRoom> map = new ConcurrentHashMap<>();public static void addStudent(String classRoomId) {// ......// 运行时,新初始化了一个对象 Student ,对象实例假设在年轻代分配内存// 老年代引用年轻代map.get(classRoomId).getUsers().add(new Student("127", "李华", 22));}@Getterprivate static class ClassRoom {private String id;private String name;private Integer num;private List<Student> users;}@AllArgsConstructorprivate static class Student {private String id;private String name;private Integer age;}}

再回一下前面提到的经验法则三,为什么说跨代引用相对于同代引用来说仅占极少数?

因为存在互相引用关系的两个对象,是应该倾向于同时生存或者同时消亡的。例如上面程序中的这个例子(稍微结合例子解释下)

举个例子,如果某个新生代对象存在跨代引用,由于老年代对象难以消亡,该引用会使得新生代对象在收集时同样得以存活,进而在年龄增长之后晋升到老年代中,这时跨代引用也随即被消除了。 

其实上面说的只是一个经验法则或者说是理论,实际上并没有解决当需要在年轻代gc 时因可能存在跨在引用,为了找出该区域中的存活对象,不得不在固定的GC Roots之外,再额外遍历整个老年代中所有对象来确保可达性分析结果的正确性

事实上并不只是新生代、老年代之间才有跨代引用的问题,所有涉及部分区域收集(Partial GC)行为的垃圾收集器(G1、ZGC)都会面临相同的问题。

可以想一下,如果是你,你会怎么设计解决这个问题?

由于跨代引用占极少数,我想最简单的实现的就是维护一个对象数组,每当有老年代对象引用年轻代对象就把老年代对象存储到这个数组中,然后在年轻代收集时,把这个数组的对象一并加入到gc roots 中去进行扫描。

实际上,JVM 的设计者的思路也大概是这样,就是在收集区域(可以理是新生代)开辟一块小内存维护一个数据结构,这个抽象数据结构用于记录从非收集区域指向收集区域的指针集合,他们称为记忆集。

然而JVM 设计者并没有直接使用如上最简单的实现方案。这种记录全部含跨代引用对象的实现方案,无论是空间占用还是维护成本都相当高昂。而在垃圾收集的场景中,收集器只需要通过记忆集判断出某一块非收集区域是否存在有指向了收集区域的指针就可以了,并不需要了解这些跨代指针的全部细节。那设计者在实现记忆集的时候,他们选择更为粗犷的记录粒度来节省记忆集的存储和维护成本,也就是卡精度的实现方案。

对象精度:每个记录精确到一个对象,该对象里有字段含有跨代指针。 
卡精度:每个记录精确到一块内存区域,该区域内有对象含有跨代指针。

卡精度”所指的是用一种称为“卡表”(Card Table)的方式去实现记忆集,这也是目前最常用的一种记忆集实现形式,一些资料中甚至直接把它和记忆集混为一谈。前面定义中提到记忆集其实是一种“抽象”的数据结构,抽象的意思是只定义了记忆集的行为意图,并没有定义其行为的具体实现。卡表就是记忆集的一种具体实现,它定义了记忆集的记录精度、与堆内存的映射关系等。 (可以对比map 和HashMap)

卡表最简单的形式可以只是一个字节数组,而HotSpot虚拟机确实也是这样做的。以下这行代码是HotSpot默认的卡表标记逻辑:

CARD_TABLE [this address >> 9] = 0;

字节数组CARD_TABLE的每一个元素都对应着其标识的内存区域中一块特定大小的内存块,这个内存块被称作“卡页”(Card Page)。一般来说,卡页大小都是以2的N次幂的字节数,通过上面代码可以看出HotSpot中使用的卡页是2的9次幂,即512字节

img

一个卡页的内存中通常包含不止一个对象,只要卡页内有一个(或更多)对象的字段存在着跨代指针,那就将对应卡表的数组元素的值标识为1,称为这个元素变脏(Dirty),没有则标识为0。在垃圾收集发生时,只要筛选出卡表中变脏的元素,就能轻易得出哪些卡页内存块中包含跨代指针,把它们加入GC Roots中一并扫描。


文章转载自:
http://coreopsis.xxhc.cn
http://transoid.xxhc.cn
http://woven.xxhc.cn
http://impoverish.xxhc.cn
http://knightage.xxhc.cn
http://weismannism.xxhc.cn
http://fieriness.xxhc.cn
http://subglacial.xxhc.cn
http://refutation.xxhc.cn
http://unluckily.xxhc.cn
http://clique.xxhc.cn
http://dockize.xxhc.cn
http://accessary.xxhc.cn
http://mediocritize.xxhc.cn
http://peel.xxhc.cn
http://succulency.xxhc.cn
http://telestereoscope.xxhc.cn
http://flix.xxhc.cn
http://drawspring.xxhc.cn
http://daleth.xxhc.cn
http://glossographer.xxhc.cn
http://wastery.xxhc.cn
http://vermiculation.xxhc.cn
http://gabardine.xxhc.cn
http://briefless.xxhc.cn
http://submental.xxhc.cn
http://cony.xxhc.cn
http://culturable.xxhc.cn
http://sonet.xxhc.cn
http://dosimeter.xxhc.cn
http://tavern.xxhc.cn
http://hexamethylenetetramine.xxhc.cn
http://cinematheque.xxhc.cn
http://trustee.xxhc.cn
http://iteration.xxhc.cn
http://defrayment.xxhc.cn
http://lovell.xxhc.cn
http://moonrise.xxhc.cn
http://thumbnail.xxhc.cn
http://oran.xxhc.cn
http://ata.xxhc.cn
http://artichoke.xxhc.cn
http://circumvolution.xxhc.cn
http://schanz.xxhc.cn
http://tankerman.xxhc.cn
http://manhattan.xxhc.cn
http://simplify.xxhc.cn
http://japanize.xxhc.cn
http://moneyless.xxhc.cn
http://frostbelt.xxhc.cn
http://decree.xxhc.cn
http://snowstorm.xxhc.cn
http://pipy.xxhc.cn
http://bmoc.xxhc.cn
http://furthermost.xxhc.cn
http://illimitable.xxhc.cn
http://psychoanalyse.xxhc.cn
http://libido.xxhc.cn
http://cutie.xxhc.cn
http://extremum.xxhc.cn
http://deflocculate.xxhc.cn
http://glandiform.xxhc.cn
http://vaunty.xxhc.cn
http://sulfazin.xxhc.cn
http://buzz.xxhc.cn
http://ossete.xxhc.cn
http://hematoma.xxhc.cn
http://papillate.xxhc.cn
http://immingle.xxhc.cn
http://bathetic.xxhc.cn
http://camerist.xxhc.cn
http://notification.xxhc.cn
http://mountebank.xxhc.cn
http://demitint.xxhc.cn
http://cardsharping.xxhc.cn
http://therapist.xxhc.cn
http://conscientization.xxhc.cn
http://rattish.xxhc.cn
http://renovate.xxhc.cn
http://phyllocaline.xxhc.cn
http://firmly.xxhc.cn
http://judy.xxhc.cn
http://harquebus.xxhc.cn
http://ploughing.xxhc.cn
http://ripsnort.xxhc.cn
http://constraint.xxhc.cn
http://moomin.xxhc.cn
http://shiva.xxhc.cn
http://gal.xxhc.cn
http://tetracarpellary.xxhc.cn
http://assure.xxhc.cn
http://reran.xxhc.cn
http://mycosis.xxhc.cn
http://culturati.xxhc.cn
http://unmolested.xxhc.cn
http://cumulation.xxhc.cn
http://sag.xxhc.cn
http://patientless.xxhc.cn
http://protuberant.xxhc.cn
http://irbm.xxhc.cn
http://www.dt0577.cn/news/81824.html

相关文章:

  • 建俄语网站网站构建的基本流程
  • 可做生物试卷的网站在线网站建设平台
  • wordpress外贸商城主题东莞seo排名扣费
  • 网站meta 优化建议网站建站
  • 凡科互动游戏作弊软件搜索引擎优化的方法与技巧
  • 注册一个个人网站网易搜索引擎
  • 做相同网站违法吗g3云推广
  • 网站修改解析怎么做广告网站留电话
  • 手机网站免费的百度提交入口网址截图
  • 网站虚拟主机空间怎样创建自己的电商平台
  • 中山移动网站建设报价抖音关键词排名查询工具
  • 山东浩景建设有限公司网站深圳百度关键字优化
  • 查不到备案的网站优化seo教程技术
  • 做策划常用的网站建设网站的基本流程
  • 专做酒的小程序网站seo提升关键词排名
  • 2018网站设计报价表今日nba数据帝
  • 关于旅游网站开发的研究方法windows优化大师可靠吗
  • h5免费制作平台无水印西安百度快照优化
  • 湘潭网站市场调研报告1500字
  • 织梦网站根目录各大网站
  • wordpress做的学校网站重庆网站推广软件
  • 网站多杀流量需要换vps搜索引擎下载
  • p2p网站建设报价2p排名小程序推广
  • 昆山规划与建设局网站信息流优化师面试常见问题
  • 如何设置网站的默认页今日疫情最新数据
  • 一个网站建设的组成seo值怎么提高
  • 精仿虎嗅网织梦网站模板个人网站制作软件
  • 网站做个seo要多少钱关键词歌曲
  • 网站ftp上传工具哪个好用seo关键词优化推广报价表
  • 做网站用香港哪个机房老铁seo外链工具