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

电商网站模板素材wordpress表单上传图片

电商网站模板素材,wordpress表单上传图片,网站开发实验结论,北京ui及网页设计分代垃圾回收在对象中导入了“年龄”的概念#xff0c;通过优先回收容易成为垃圾的对象#xff0c;提高垃圾回收的效率。 1、新生代对象和老年代对象 分代垃圾回收中把对象分类成几代#xff0c;针对不同的代使用不同的 GC 算法#xff0c;我们把刚生成的对象称为新生代对…分代垃圾回收在对象中导入了“年龄”的概念通过优先回收容易成为垃圾的对象提高垃圾回收的效率。 1、新生代对象和老年代对象 分代垃圾回收中把对象分类成几代针对不同的代使用不同的 GC 算法我们把刚生成的对象称为新生代对象到达一定年龄的对象则称为老年代对象。 众所周知新生代对象大部分会变成垃圾。如果我们只对这些新生代对象执行 CC会怎么样呢除了引用计数法以外的基本算法都会进行只寻找活动对象的操作(如标记清除算法的标记阶段和 复制算法等)。因此如果很多对象都会死去花费在 GC上的时间应该就能减少。 我们将对新对象执行的 CC 称为新生代 GC (minor GC)。mainor 在这里的意思是“小规模的”。新生代 GC 的前提是大部分新生代对象都没存活下来GC 在短时间内就结束了。 另一方面新生代 GC 将存活了一定次数的新生代对象当作老年代对象来处理。我们把类似于这样的新生代对象上升为老年代对象的情况称为晋升 (promotion).。 因为老年代对象很难成为垃圾所以我们对老年代对象减少执行 GC 的频率。相对于新生代GC我们将面向老年代对象的 GC 称为老年代 GC (major CC)。 在这里有一点需要注意那就是分代垃圾回收不能单独用来执行 GC。我们需要把它和之前介绍的基本算法结合在一起使用来提高那些基本算法的效率。 也就是说分代垃圾回收不是跟GC 标记一清除算法和 GC 复制算法并列在一起供我们选择的算法而是需要跟这些基本算法一并使用。 2、Unger的分代垃圾回收 在Ungar 的分代垃圾回收中堆的结构如下图所示。我们总共需要利用 4个空间分别是生成空间、2个大小相等的率存空间以及老年代空间并分别用 new_start、survivor1_start、survivor2_start、old_start 这4 个变量引用它们的开头。我们将生成空间和幸存空间合称为新生代空间。新生代对象会被分配到新生代空间老年代对象则会被分配到老年代空间里。Ungar 在论文里把生成空间、幸存空间以及老年代空间的大小分别设成了 140K字节、28K 字节和 940K宇节。 此外我们准备出一个和堆不同的数组称为记录集(remembered set)设为rs。 生成空间就如它的字面意思一样是生成对象的空间也就是进行分配的空间。当生成空间满了的时候新生代 GC 就会启动将生成空间中的所有活动对象复制这跟GC 复制算法是一个道理。目标空间是幸存空间。 2个幸存空间和CC复制算法里的 From 空间、To 空间很像我们经常只利用其中的一个。在每次执行新生代 GC 的时候活动对象就会被复制到另一个幸存空间里。在此我们将正在使用的幸存空间作为 From 幸存空间将没有使用的幸存空间作为To幸存空间。 不过新生代GC 也必须复制生成空间里的对象。也就是说生成空间和 From 幸存空间这两个空间里的活动对象都会被复制到To幸存空间里去。这就是新生代 CC。 只有从一定次数的新生代 CC 中存活下来的对象才会得到晋升也就是会被复制到老年代空间去。 分代垃圾回收的优点是只将垃圾回收的重点放在新生代对象身上以此来缩减GC所需要的时间。不过考虑到从老年代对象的引用结果还是要搜索堆中的所有对象这样一来就大大削减了分代垃圾回收的优势。所以就利用到了——记录集。 记录集用来记录从老年代到新生代对象的引用。这样新生代GC就可以不搜索老年代空间的所有对象只通过搜索记录集来发现从老年代到新生代对象的引用。 3、记录集 记录集被用于高效地寻找从老年代对象到新生代对象的引用。具体来说在新生代GC时将记录集看成根并进行搜索以发现指向新生代空间的指针。 记录集基本上是用固定大小的数组来实现的。各个元素是指向对象的指针。 那么我们该怎么往记录集里记录对象呢这就是下一节要介绍的“写入屏障”了。 4、写入屏障 在分代垃圾回收中为了将老年代对象记录到记录集里我们利用写入屏障 (write barrier)。在mutator 更新对象间的指针的操作中写入屏障是不可或缺的。write_barrier函数的伪代码如下所示。这个函数跟引用计数法中出现的 update_ptr(函数是在完全相同的情况下被调用的。 write_barrier (obj, field, new_obj){if (obj $old_start new_obj $old_start obj.remembered false)$rs [$rs-indez] obj$rs_indexobj.remembered true*field new_obj }参数obj是发出引用的对象obj 内存在要更新的指针而 field指的就是 obj 内的域。new_obj 是在指针更新后成为引用目标的对象。 if判断主要是检查以下三点 发出引用的对象是不是老年代对象指针更新后的引用的目标对象是不是新生代对象发出引用的对象是否还没有被记录到记录集中 当这些检查结果都为真时obj 就被记录到记录集中了。 5、对象的结构 在Ungar 的分代垃圾回收中对象的头部中除了包含对象的头部中类和大小之外还有以下这3条信息 对象的年龄age已经复制完成的标志forwarded已经向记录集记录完毕的标志remembered age表示的是对象从新生代 CC 中存活下来的次数这个值如果超过一定次数(AGE_MAX)对象就会被当成老年代对象处理。我们在 CC 复制算法和 GC标记压缩算法中也用到过 forwarded 这里它的作用是一样的都是用来防止重复复制相同对象的标志。这里的remembered也一样是用来防止向记录集中重复记录的标志。不过 remembered只用于老年代对象age 和forwarded只用于新生代对象。 此外跟GC复制算法一样在这里我们也使用forwarding指针。在torvrarting 指针中利用obj.field1用obj.forwarding 访问 obj.field1. Ungar 的分代垃圾回收中用到的对象的结构如下图所示 6、分配 分配是在生成空间进行的。执行分配的new_obj()函数如下所示 new_obj (size){if ($new_free size › $survivor1_start)minor_gc ()if ($new_free size › $survivor1_start)allocation_fail ()}obj $new_free$new_free sizeobj.age 0obj.forwarded falseobj.remembered falseobi.size sizereturn obj }7、优缺点 优点吞吐量得到改善 缺点在部分程序中会起到反作用。“很多对象年纪经轻就会死”这个法则毕竟只适合大多数情况并不适用于所有程程序。当然、对象会活得很久的程序也有很多。对这样的程序执行分代垃圾回收就会产生以下两个问题 新生代GC所花费的时间增多老年代GC频繁运行 而且写入屏障导致的额外负担降低了吞吐量。只有当新生代GC 带来的速度提升效果大于写入屏障对速度造成的影响时分代垃级回收才能够更好地发挥作用。当这个大小关系不成立时分代址圾回收就没有什么作用或者说反而可能会起到反作用。这种情况下我们还是使用基本算法更好。
http://www.pierceye.com/news/870391/

相关文章:

  • 福州网站建设技术支持公司培训课程有哪些
  • 保定网站制作域名注册商查询
  • 医院网站建设公司价格低天津建设工程信息网 塘沽一中
  • 建设机械网站案例建国外网站需要多少钱
  • 比特币简易网站开发电商网站大全
  • 秀屿区建设局网站巨量广告投放平台
  • 合肥网站设计哪家公司好北京国贸网站建设公司
  • 帮人做网站怎么收费制作链接的app的软件有哪些
  • 商贸行业网站建设公司yoast wordpress seo
  • 上小学网站建设WordPress底部添加运行时间
  • 学校网站信息化建设工作心得网络营销现状分析
  • 藁城专业网站建设班级同学录网站建设
  • 北京手机网站开发公司wordpress用户列表
  • 上海 企业网站制成都营销型网站建设熊掌号
  • 无锡网站优化哪家好北京注册公司地址可以是住宅吗
  • 中国十大热门网站深圳哪做网站
  • 木渎网站建设聚美优品网站建设情况
  • 企业形象网站用什么语言开发网站优化要做哪些工作
  • 中国建设银行官网站电话号码wordpress关键词排名
  • 南通网站建设机构博物馆网站建设的根本意义
  • 食品企业网站建设中信建设有限责任公司陈晓佳
  • 中国网站服务器哪个好店名注册查询
  • 网站设计制作案例软件定制开发的发展前景
  • 中国联通网站备案小程序是什么原理
  • 企业网站建设御彩云dz做电影网站
  • 做网站需要的东西网站改版是什么
  • 网站需要哪些北京正规网站建设比较
  • 建设公共网站的手续成都公司网站制作
  • 怎么用安卓机顶盒做网站服务器怎样建立微信公众号平台
  • 专业的集团网站开发开发平面设计软件哪个好用