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

吉林省建设厅价格信息网站wordpress调用全站最新文章

吉林省建设厅价格信息网站,wordpress调用全站最新文章,有没有做.net面试题的网站,中国新闻社副社长垃圾回收策略#xff08;Garbage Collection#xff0c;GC#xff09;用于回收不再使用的内存#xff0c;避免系统的内存被占满。Go1.3之前采用标记清除法#xff0c; Go1.3之后采用三色标记法#xff0c;Go1.8采用三色标记法混合写屏障。 前置概念#xff1a; 1#x…        垃圾回收策略Garbage CollectionGC用于回收不再使用的内存避免系统的内存被占满。Go1.3之前采用标记清除法 Go1.3之后采用三色标记法Go1.8采用三色标记法混合写屏障。 前置概念 1根对象应用程序中可以直接或间接访问的对象主要包括 全局变量在程序编译期间就能确定全局变量存在于程序的整个生命周期执行栈Go语言中协程是分配在堆上每个协程都含有自己的执行栈寄存器寄存器的值可能表示一个指针这些指针可能指向某些赋值器分配的堆内存区 2STW(Stop-The-World)系统在执行特定操作时暂停所有应用程序线程直到某个特定的事件发生或处理完成。 1. 标记清除法 具体步骤 1首先从根对象出发标记所有可达对象。 这一过程通常使用深度优先搜索或广度优先搜索进⾏。标记的方式通常是将对象的标记位从未标记改为已标记。 2在清扫阶段遍历整个堆内存将未被标记的对象视为垃圾即不再被引用。所有未被标记的对象都将被回收它们的内存将被释放以便后续的内存分配。 标记清除算法执行完清扫阶段后可能会产生内存碎片即一些被回收的内存空间可能是不连续的。为了解决这个问题一些实现中可能会进行内存碎片整理。 总结 标记清除算法的主要优势是能够回收不再使用的内存但它也有一些缺点其中主要的缺点是清扫阶段可能会引起一定程度的停顿因为在这个阶段需要遍历整个堆内存。另外由于标记清除算法只关注“存活”和 “垃圾”两种状态不涉及内存分配的具体位置可能导致内存碎片的产生。 2. 三色标记法 三色标记是指将对象分为三种颜色白色、灰色、和黑色。 1白色代表最终需要清理的对象内存块 2灰色待处理的内存块 3黑色活跃的内存块 具体步骤 1初始时所有对象都被标记为白色表示它们都是未被访问的垃圾对象。 2根搜索从根对象开始搜索所有根对象被标记为灰色表示它们是待处理的对象。 3标记阶段从灰色对象开始垃圾回收器遍历对象的引用关系将其引用的对象标记为灰色然后当前该对象标记为黑色。重复这一步骤直到所有可达对象都被标记为黑色。 4清扫阶段在标记完成后垃圾回收器会扫描堆中的所有对象将未被标记的对象回收释放其内存。这些未被标记的对象被认为是不可达的垃圾。 5内存返还垃圾回收完成后系统中的内存得以回收并用于新的对象分配。 总结 1优点在标记阶段垃圾回收器采用并发标记的方式与程序的执行同时进行。这意味着程序的执行不会因为垃圾回收停顿减小了对程序性能的影响。 2缺点如果对象的引用被用户修改了那么之前的标记就⽆效了。         3垃圾回收的触发条件通常是在分配新对象时如果达到⼀定的内存分配阈值就会触发垃圾回收。 另外⼀些特定的事件如系统调用、网络阻塞等也可能触发垃圾回收。        3. 三色标记法混合写屏障 屏障技术可以理解为一种回调机制在程序的某种执行过程中加一个判断机制满足判断机制则执行回调函数类似于钩子函数Hook。 实际上垃圾回收机制只用于回收堆上的内存栈中的内存如局部变量、函数调用等会在调用结束后自动释放。也就是说屏障机制只能作用于堆对象。屏障机制分为插入写屏障和删除写屏障 插入写屏障实现了强三色不变性给对象添加引用关系时触发删除写屏障实现了弱三色不变性删除对象引用关系时触发 强三色不变性强制性的不允许黑色对象引用白色对象弱三色不变性允许黑色对象引用白色对象但是白色对象必须存在其他灰色对象对它的引用。 插入写屏障每当一个对象被引用就会触发判断如果这次操作是一个白色对象被黑色对象引用就把这个白色对象标记为灰色 删除写屏障每当一个对象被删除时就会触发判断如果是一个灰色对象引用的白色对象被删除那么就把这个白色对象标记为灰色 插入写屏障和删除写屏障都有各自的短板 插入写屏障结束时需要 STW标记清除重新扫描栈 删除写屏障回收精度低在开始时需要 STW 扫描整个堆栈记录初始快照 基于插入写屏障和删除写屏障在结束时需要STW来重新扫描栈带来性能瓶颈。混合写屏障分为以下四步: GC开始时将栈上的全部对象标记为黑色不需要二次扫描无需STW GC期间任何栈上创建的新对象均为黑色  被删除引用的对象标记为灰色  被添加引用的对象标记为灰色 因此一次完整的GC分为四个阶段 准备标记需要STW开启写屏障。开始标记标记结束STW关闭写屏障清理并发 总结 标记清除法需要一次全局 STW先标记可达对象再清除所有的不可达对象性能很差 三色标记法身无法在并发条件下正确执行单独使用也需要 STW 才能保证正确性 为了优化这一过程避免全局 SWT引入了插入写屏障插入写屏障是一种触发机制每当一个对象被引用时如果是黑色对象引用白色对象就把这个白色对象置灰但是由于屏障机制无法作用到栈对象为了避免与栈相关的活跃对象被错误回收需要在三色标记法结束后对栈做一次 STW清除掉垃圾对象插入写屏障虽然优化了全局 SWT但是每次GC也需要对栈上的一次 STW 为了解决这一问题最终的方案是混合写屏障混合写屏障的触发机制有两个被删除的对象会被标记为灰色被添加的对象会被标记为灰色同时在开始时会把栈上所有可达对象置黑栈上对象被创建时也会置黑。这样就记录了栈上的对象状态避免了错误回收活跃对象 混合写屏障结合了插入写屏障和删除写屏障的优点避免了在插入写屏障结束后需要进行全栈扫描的性能问题实现了更高效的垃圾回收机制。 参考代码随想录、Go语言的垃圾回收机制图文并茂 一篇搞懂_go垃圾回收-CSDN博客
http://www.dnsts.com.cn/news/185777.html

相关文章:

  • win7系统做asp网站宁波网站推广怎样做
  • 设计机构网站养老院网站建设
  • 猪八戒网做动漫弹幕网站兴县做网站的公司
  • 做网站视频用哪个视频编辑软件重庆黔江做防溺水的网站
  • 专业定制网站建设团队网站后台jsp怎么做分页
  • 网站策划书主题wordpress本地连接
  • mp3链接地址制作网站苏州网站推广如何
  • 建设银行网银官方网站太原做网站软件
  • 端州网站建设公司wordpress 菜单路径
  • 网站诚信认证怎么做软件工程专业是干什么的
  • 北京网站制作的公司哪家好卡盟网站是怎么建设的
  • 常州百度网站排名上海网站建设备案号
  • 网站维护和建设实报告税企互动平台
  • 求职招聘网站开发文创产品有哪些
  • 传奇手游大型网站国外代理网站
  • 百度提交网址多久才会收录网站关键词怎么优化到首页
  • 高埗网站仿做江西赣州
  • 江苏建设监理协会网站免费下载一个app
  • 自适应网站m域名必须做301wordpress手机没搜索
  • 品牌网站响应式网站有哪些用什么软件搭建网站源码
  • 免费学建筑知识网站路由器组网怎么设置
  • 树莓派网站建设软件开发的八个步骤
  • 深圳工程交易中心网关键词排行优化网站
  • 大人怎么做羞羞的网站网站开发如何收费
  • 潍坊市高新区建设局网站致远oa办公系统官网
  • 创新的网站建设排行榜houzz室内设计
  • 做寝室介绍网站网站建设找盖亚科技
  • 毕业设计是做网站设计设计相关的网站
  • iis6.0做网站压缩提高工作效率心得体会
  • 免费企业建站源代码网站重要性