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

江西南昌网站建设哪家公司好打开百度网站首页

江西南昌网站建设哪家公司好,打开百度网站首页,都江堰做网站,那些免费网站可以做国外贸易内存垃圾的产生 程序在内存上被分为堆区、栈区、全局数据区、代码段、数据区五个部分。对于C等早期编程语言栈上的内存回由编译器负责管理回收#xff0c;而堆上的内存空间需要编程人员负责申请和释放。在Go中栈上内存仍由编译器负责管理回收#xff0c;而堆上的内存由编译器…内存垃圾的产生 程序在内存上被分为堆区、栈区、全局数据区、代码段、数据区五个部分。对于C等早期编程语言栈上的内存回由编译器负责管理回收而堆上的内存空间需要编程人员负责申请和释放。在Go中栈上内存仍由编译器负责管理回收而堆上的内存由编译器和垃圾收集器负责管理回收给编程人员带来了极大的便利性。 垃圾是指程序向堆栈申请的内存空间随着程序的运行已经不再使用这些内存空间这时如果不释放它们就会造成垃圾也就是内存泄漏。 package main//假设每个人都拥有自己都一部手机type Person struct {phone *Phone}type Phone struct {money int}func main() {//定义一个Person为超超chao : new(Person)//超超一开始用的是iphone12iphone : Phone{money: 6599}chao.phone iphone//华为推出了鸿蒙于是超超果断入了一部mate40huawei : Phone{money: 5899}chao.phone huawei} 随着超超将手机从iphone换成了华为phone指向的内存空间就变成了垃圾这时就需要对phone指向的内存空间进行回收否则就变成了内存泄漏。 Golang垃圾回收机制 Go1.3采用的标记清除法Go1.5采用三色标记法Go1.8采用三色标记法混合写屏障。 标记清除法 分为两个阶段标记和清除 标记阶段从根对象出发寻找并标记所有存活的对象。 清除阶段遍历堆中的对象回收未标记的对象并加入空闲链表 缺点需要暂停程序STW 步骤 进行STW暂停程序业务逻辑然后从main函数开始找到不可达的内存占用和可达的内存占用开始标记程序找出可达内存占用并标记标记结束清除未标记的内存占用结束STW停止暂停让程序继续执行循环该过程直到main生命周期结束。 一开始的做法是将垃圾清理结束时才停止STW,后来优化了方案将清理垃圾放到了STW之后与程序运行同时进行这样做减少了STW的时长。但是STW会暂停用户逻辑对程序的性能影响是非常大的这种粒度的STW对于性能较高的程序还是无法接受因此Go1.5采用了三色标记法优化了STW。 三色标记法 将对象标记为白色灰色和黑色 白色不确定对象(默认色) 黑色存活对象灰色存活对象子对象待处理 步骤 将所有对象标记为白色从根节点集合出发将第一次遍历到的节点标记为灰色放入到集合列表中遍历灰色集合将灰色节点遍历到的白色节点标记为灰色并把灰色节点标记为黑色、循环整个过程直到灰色节点集合为空回收所有白色节点 这种方法有个缺陷如果对象的引用被用户修改了那么之前的标记就无效了。 分析bug的根源所在主要是因为程序在运行过程中出现了下面俩种情况 一个白色对象被黑色对象引用灰色对象与它之间的可达关系的白色对象遭到破坏 因此在此基础上拓展出了俩种方法强三色不变式和弱三色不变式 强三色不变式不允许黑色对象引用白色对象弱三色不变式黑色对象可以引用白色白色对象存在其他灰色对象对他的引用或者他的链路上存在灰色对象 为了实现这俩种不变式的设计思想从而引出了屏障机制即在程序的执行过程中加一个判断机制满足判断机制则执行回调函数。 屏障机制分为插入屏障和删除屏障插入屏障实现的是强三色不变式删除屏障则实现了弱三色不变式。值得注意的是为了保证栈的运行效率屏障只对堆上的内存对象启用栈上的内存会在GC结束后启用STW重新扫描。 插入屏障对象被引用时触发的机制当白色对象被黑色对象引用时白色对象被标记为灰色栈上对象无插入屏障 缺点在于如果对象1在栈上新创建了一个对象6由于栈没有屏障机制所以对象6仍为白色节点会被回收 所以栈在GC迭代结束时没有灰色节点会对栈执行STW重新进行扫描清除白色节点。STW时间为10-100ms  删除屏障对象被删除时触发的机制。如果灰色对象引用的白色对象被删除时那么白色对象会被标记为灰色。 缺点这种做法回收精度较低一个对象即使被删除仍可以活过这一轮再下一轮被回收。如果对象4没有引用对象3此时对象3应该作为垃圾被回收但是对象3却要等到下一轮GC才会被回收 同样也存在对栈的二次扫描影响程序的效率。 三色标记混合写屏障技术 基于插入写屏障和删除写屏障在结束时需要STW来重新扫描栈所带来的性能瓶颈Go在1.8引入了混合写屏障的方式实现了弱三色不变式的设计方式混合写屏障分下面四步 GC开始时将栈上可达对象全部标记为黑色不需要二次扫描无需STWGC期间任何栈上创建的新对象均为黑色被删除引用的对象标记为灰色被添加引用的对象标记为灰色
http://www.dnsts.com.cn/news/270787.html

相关文章:

  • 德国设计网站大全阿里云服务器如何做两个网站
  • 自己编写网站网站建设一般多少钱新闻
  • 推荐几个手机能看的网站wordpress 替换jquery
  • 网站搭建哪家好青岛做网站的公司有哪些
  • php ajax网站开发典型实例pdf网页设计作品集图片
  • 网站基本要素网站建网站建设网站站网站
  • 北京做网站推广兼职公众号搭建第三方平台
  • 淘宝做个网站多少钱软件库合集软件资料链接
  • 国家现代农业示范区建设网站如何免费建设网站com
  • 网站个人备案 企业备案吗自己搭建一个网站需要多少钱?
  • 首饰网站建设成都芯片设计公司
  • 合肥建站费用网站建设要符合哪些标准
  • 杭州网站建设开发大宗交易的套路你懂吗
  • 老年公寓网站模板建立网站商店
  • 做网站的带宽各位大神给个网址
  • 秦皇岛网站制作方案编程学校一学期多少钱
  • 网站开发的前景wordpress code theme
  • 网站视频下载脚本浙江省建筑培训网
  • 做外贸都有哪些网站大连网页制作培训学校
  • 青岛网站关键词优化公司wordpress标签里面没文章
  • 网站建设销售怎样网页设计模板html代码班级主题
  • 徐州做网站多少钱网络公司哪家好
  • 网站建设备案策划书公司网站管理制度
  • 网站验收标准国家653工程
  • 怎么创建网站免费的wordpress 公司插件
  • 优秀企业网站设计wordpress好看分页
  • 大连网站运营百度竞价排名查询
  • 网站开发与设计课程设计荆门刚刚发布的
  • 企业网站有哪些企业常州抖音seo
  • 福永公司网站建设商业模式顶层设计案例