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

网站建设方案分析广告设计网站排行榜前十名

网站建设方案分析,广告设计网站排行榜前十名,网站建的创新点,wordpress获取输入框的值比较简单回顾 在Java当中#xff0c;程序员在编写代码的时候只需要创建对象#xff0c;从来不需要考虑将对象进行释放#xff0c;这是因为Java中对象的垃圾回收全部由JVM替你完成了(所有的岁月静好都不过是有人替你负重前行)。 而JVM的垃圾回收由垃圾回收器来负责#xff0c;在…简单回顾 在Java当中程序员在编写代码的时候只需要创建对象从来不需要考虑将对象进行释放这是因为Java中对象的垃圾回收全部由JVM替你完成了(所有的岁月静好都不过是有人替你负重前行)。 而JVM的垃圾回收由垃圾回收器来负责在JDK的不断更新迭代过程中JVM的垃圾回收器也经历了Serial 垃圾收集器、Serial Old 垃圾收集器、ParNew 垃圾收集器、Parallel Old垃圾收集器、CMS垃圾收集器以及目前最流行的G1垃圾回收器(也就是本文重点要讲的)。 G1的诞生与发展 G1垃圾回收器最早在2004年发表论文提出(Garbage-First Garbage collectiondoi:10.1145/1029873.1029879)在JDK6 中首次被应用在JDK7中被正式支持而到了2019年发布的JDK9中G1垃圾收集器已经作为了官方默认的垃圾收集器取代了之前的CMS。 G1有什么厉害的地方 先介绍两个词硬实时性和软实时性。 硬实时性hard real-time每次处理的时间都不能超过最后期限比如医疗机器人控制系统、航空管制系统。 软实时性soft real-time稍微超出几次最后期限也没有什么问题的系统例如网络银行系统。 G1最大的特点就是非常重视高吞吐量与软实时性的最佳平衡它让用户来设定期望最大暂停时间(Stop the word)也就是在垃圾回收时停止所有用户线程的时间G1垃圾收集器可以预测下次 GC 会导致应用程序暂停多长时间。然后根据预测出的结果G1会通过延迟执行GC、拆分 GC 目标对象等手段来尽量满足用户设置的期望最大暂停时间默认的暂停目标是 200ms。你想让GC时暂停多久它就能尽量的满足你。 G1垃圾收集器的应用场景最好需要包含以下特性满足这些特性的话则可能更适合G1出马否则可能其他GC更合适 堆内存大小超过10G且存活对象占用比例超过50% 对象分配和晋升速率可能随时间有显著变化 堆中存在大量碎片 预测的最大停顿时间不超过几百毫秒 G1有什么特别牛逼的地方呢 首先以往的 GC 都是尽可能缩短最大暂停时间缩短最大暂停时间很容易导致吞吐量下降。当然我们肯定希望是暂停时间越短约好呀但是暂停时间过短很可能会导致频繁发生GC从而把CPU全部都打满了也就是吞吐量降低。所以并不是暂停时间越短机器性能越好。另外以往的 GC 无法预测暂停时间GC 时可能会使应用程序长时间暂停的风险。G1的目的就是高效地实现软实时性能够让用户设置期望暂停时间。在确保吞吐量比以往的 GC 更好的前提下实现了软实时性。最大程度利用服务器上多处理器的优势而且在处理巨大的堆时也不会降低 GC 的性能。 G1垃圾收集模型 堆内存划分 G1垃圾收集器采取了和之前所有的垃圾收集器完全不一样的思路可以说是一个开拓者。别人都在研究如何让马车能够把车拉的更快(改良马车结构马车上多绑几匹马)G1相当于发明出来了蒸汽机来替代马车。 G1垃圾收集器开创了面向局部收集的设计思路和基于Region的内存布局形式。G1不再坚持固定大小以及固定数量的分代区域划分而将内存结构划分成如图所示大小相等的块状区域称为regionregion是内存分配和内存回收的最小单位每个Region都可以成为 Eden空间、Survivor空间、老年代空间。region的大小可以由用户进行调整但是内部会将用户设置的值向上调整为 2 的指数幂来作为区域的大小。 图中绿色区域指代的是新生代中的伊甸园区Eden蓝色区域指代的是老年代old generation标注为S的橙色区域的为Suvivor Region标注为H的蓝色区域为Humoungous Region(巨型对象也属于老年代)灰色的区域为空闲区。我们从图中对象占用的内存都不是连续的并且任何一个区域都没有特定的年代划分可以将它分配成新生代也可以分配为老年代。由于分区的原因,G1可以只选取部分区域进行内存回收,这样缩小了回收的范围,因此对于全局停顿情况的发生也能得到较好的控制。这是G1和其他收集器在堆内存结构上的最大差别也是为什么G1更适合处理堆中存在大量碎片场景的原因。 卡表与卡页 JVM将堆内存划分为了2次幂大小的卡页Card Page使用卡表来记录整个内存的状态。默认情况下卡页的大小为512B。卡表Card Table是由1B组成的数组卡表里的元素称为卡片Card每个卡片对应堆内存中的一个卡页卡表中的卡片与卡页的映射关系卡片数组位置为堆内存地址除卡页大小向下取整。在堆大小是 1GB 时卡表大小为 2MB。 堆中对象所对应的卡片在卡表的索引值 对象的地址 - 堆的头部地址 / 512 因为卡片的大小是 1B所有可以表示其对应卡页所处的很多状态在后面只涉及到其中的两种净卡片和脏卡片。 记忆集RSet 记忆集英文全称为RemerberSet简称RSet是一种抽象概念。其核心思想是通过卡表记录对象在不同代际间的引用关系加速垃圾回收的速度。 JVM会通过可达性分析算法标记存活对象来帮助进行垃圾回收不过在分代GC中新生代和老年代处于不同的回收阶段如果仅仅只需要回收新生代却标记了老年代的对象那么这无疑是不必要的。但是如果只回收新生带的时候新生代的对象有被老年代引用的情况也就是出现跨区引用时只扫描新生代显然是不行的。所以JVM设计了RSet这样的玩意来避免这种现象将跨带引用的信息都记录到对应的记忆集中使其即便不扫描全部对象也可以查到待回收对象所在分区被其它分区引用的情况。 每个Region中都会开辟一小块的区域作为记忆集的存储位置记忆集的结构为一个Hash表Key为引用本分区的其它分区的地址Value是卡片Card在卡表的索引值即分区中的哪些卡页引用了本分区。 例如在下图中区域 B 中的对象 b 引用了区域 A 中的对象 a。因为对象 b 不是区域 A 中的对象所以必须记录这个引用关系。在记忆集合 A 中以区域 B 的地址为键记录了卡片的索引 2048对象 b 对应的卡片索引此时对象 b 对对象 a 的引用被准确记录了下来。 那么是否是所有的引用关系都需要记录到记忆集中呢答案不是的分为以下几种情况来进行讨论。 无需记录引用关系 Region内部间的引用无需记录引用关系Region是内存分配和回收的最小单位要么都回收要么都不回收所以不需要进行记录。 新生代分区到新生代分区的引用无需记录引用关系无论哪种类型的回收新生代都会全量回收。 新生代分区到老年代分区的引用无需记录引用关系对于YoungGC来说针对的新生代则无需关心对于混合GC来说会使用新生代分区作为根那么遍历所有新生代分区自然能找到老年代对于FullGC来说所有分区都会被清理无需关心引用关系。 需要记录引用关系 老年代分区到新生代分区的引用需要记录引用关系新生代回收时有两种根一种是栈空间/全局变量的引用另一种便是老年代到新生代的引用 老年代分区到老年代分区的引用需要记录引用关系混合回收时可能只回收部分Region需要记录引用关系快速找到活跃对象 写屏障 记忆集的主要作用是记录跨Region的引用关系为保证其正确性那么当引用关系变化时我们需要及时更新记忆集而记忆集写屏障则负责对记忆集进行更新。 每个应用程序线程都持有一个转移专用记忆集合日志的缓冲区其中存放的是卡片索引的数组。当对象的域被修改时写屏障就会感知并会将对象 所对应的卡片索引添加到转移专用记忆集合日志中。 主要步骤 从转移专用记忆集合日志的集合中取出转移专用记忆集合日志从头开始扫描 将卡片变为净卡片 检查卡片所对应存储空间内的所有对象的域 向域中地址所指向的区域的记忆集合中添加卡片 G1 垃圾回收过程 G1的GC主要分为Young GC和Mixed GC两种模式有些特殊场景可能会发生Full GC。不过如果按照垃圾回收的阶段来划分的话G1的垃圾回收过程只包含两个阶段Young-Only和Space Relcaimation阶段。 在Young Only阶段G1只会回收新生代内存即新生代回收在Space Reclamation阶段G1除了会全量回收新生代内存还会回收老年代区域即混合回收。Full GC是一种特殊的兜底回收逻辑此处不考虑进来。所以G1的垃圾回收其实不是我们所想的Young GC和Mixed GC穿插进行而是Young GC 持续一段时间Mixed GC 再持续一段时间。 图中的圆圈表示G1回收过程中的暂停蓝色圆圈表示Young-only GC导致的暂停红色圆圈表示Mixed GC导致的暂停黄色圆圈表示有并发标记导致的暂停。 全局并发标记 并发标记的时机是在Young GC后时只有达到InitiatingHeapOccupancyPercent阈值后才会触发并发标记。InitiatingHeapOccupancyPercent默认值是45。 整个过程分为四个步骤 初始标记标记处所有跟GC Roots直接关联的对象这一阶段STW并且耗时很短主要是修改TAMS指针的值让下一阶段分配对象能够使用Region内存。 并发标记从GC Roots对堆中的对象进行可达性分析 找出存活的对象并发标记阶段产生的新的引用会被SATB的写屏障记录下来并且还会定期更新和处理SATB局部缓存表的信息和记录如果发现某一个Region中所有都是垃圾那么就直接进行回收。 重新标记标记在并发期间因为程序运作而改变的引用对象。 清除进行价值衡量回收最优价值的Region区。 转移存活对象 在并发标记完成后G1能筛选出所有候选的回收集并根据用户定义的期望最大停顿时间筛选本次转移真正的回收集CSet标记回收集中的存活对象将这些对象转移完成垃圾回收。 参数介绍 参数 说明 -XX:UseG1GC 使用 G1 收集器 -XX:G1HeapRegionSizen 设置 G1区域Region的大小。范围从1 MB 到32MB之间目标是根据最小的 Java 堆大小划分出大约2048个区域。 -XX:MaxGCPauseMillis200 设置最长暂停时间目标值默认是200毫秒 -XX:G1NewSizePercent5 设置年轻代最小值占总堆的百分比默认值是5% -XX:G1MaxNewSizePercent60 设置年轻代最大值占总堆的百分比默认值是java堆的60% -XX:ParallelGCThreadsn 设置STW并行工作的GC线程数一般推荐设置该值为逻辑处理器的数量最大是8如果逻辑处理器大于8则取逻辑处理器数量的5/8这适用于大多数情况除非是较大的SPARC系统其中的n值可以是逻辑处理器的5/16 -XX:ConcGCThreadsn 并发标记阶段并发执行的线程数一般n值为并行垃圾回收线程数ParallelGCThreads的1/4左右 -XX:InitiatingHeapOccupancyPercent45 设置触发全局并发标记周期的Java堆内存占用率阈值默认占用率阈值是整个Java堆的45% -XX:G1MixedGCLiveThresholdPercent85 老年代Region中存活对象的占比只有当占比小于此参数的Old Region才会被选入CSet。这个值越大说明允许回收的Region中的存活对象越多可回收的空间就越少gc效果就越不明显 -XX:G1HeapWastePercent5 设置G1中愿意浪费的堆的百分比如果可回收region的占比小于该值G1不会启动Mixed GC默认值10%主要用来控制Mixed GC的触发时机。在global concurrent marking结束之后我们可以知道老年代regions中有多少空间要被回收在每次YGC之后和再次Mixed GC之前会检查垃圾占比是否达到此参数只有达到了下次才会触发Mixed GC。 -XX:G1MixedGCCountTarget8 一次全局并发标记后最多执行Mixed GC的次数次数越多单次回收的老年代的Region个数就越少暂停也就越短 -XX:G1OldCSetRegionThresholdPercent10 一次Mixed GC过程中老年代Region内存最多能被选入CSet中的占比 -XX:G1ReservePercent10 设置作为空闲空间的预留内存百分比用来降低目标空间溢出的风险默认是10%一般增加或减少百分比时需要确保也对java堆调整相同的量。 实例参考 下面是一台部署线上服务的4核10G的服务器的GC情况其使用的垃圾回收器为G1 如图可得该实例在最近两小时共产生16次GC平均每次间隔七八分钟。 每次GC耗时没有超过50ms因此每分钟的吞吐量也超过了99%符合MaxGCPauseMillis200这个配置所有的停顿时间都没有超出目标值。 堆内存大约在到达4G的时候开始被回收符合InitiatingHeapOccupancyPercent40这个配置在堆内存达到10*40%4G的时候开始触发标记周期然后进行内存回收工作.
http://www.hkea.cn/news/14401121/

相关文章:

  • 三只松鼠网站推广策略怎样创建网站平台
  • 中小企业网站建设信息cms适合做什么网站
  • 做旅游项目用哪家网站好网站建设的组织机构
  • 怎么检查网站有没有做跳转精准扶贫网站建设目的
  • 安丘网站建设aqfeifan河南郑州新闻
  • 做网站需要服务器查询吗wordpress .mo .po
  • 临检中心网站建设wordpress 仿头条主题
  • 宁波网站排名优化徐州cms模板建站
  • 网站建设工作汇报简述网站开发工作流程
  • 多种郑州网站建设wordpress 盒模型大学
  • 如何能去医疗网站做编辑wordpress手机上打不开
  • 兰州手机网站建设官方网站开发商
  • 网站 cms嘉兴网站建设全包
  • 网站建设明细报价设计一个个人网站的基本步骤
  • 网站开发 策划是干嘛的深圳做自适应网站公司
  • 百度安全网站检测做搬家服务网站问卷调查结果
  • 公司招聘网站微豆网络科技有限公司网页设计
  • 手机端网站推广收图片的网站
  • 网站的网页建设银行中国网站首页
  • 网站建设注册小程序tale博客和wordpress
  • 赣州住房建设部网站成都网站设计平台
  • 如果在各大网站做免费的网络推广网页设计实训总结模板
  • wordpress整站备份太原网页设计与制作
  • 阿里云做的网站wordpress文章存档插件
  • 公路投资建设有限公司网站双控机制建设网站
  • 西宁网站建设的企业怎么做脱机网站
  • 99到家微网站什么做的做网站建设个体经营小微企业
  • wordpress 网站模板开封建设企业网站公司
  • 阿里云智能logo设计网站施工企业资质类别
  • 东莞市房管局官方网站wordpress任意电脑编辑