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

基于html5设计的网站建设500强企业排名(2022最新名单)

基于html5设计的网站建设,500强企业排名(2022最新名单),网站关键词排名查询,wordpress rest 接口转载自 JVM内存管理------GC算法精解#xff08;复制算法与标记/整理算法#xff09;本次LZ和各位分享GC最后两种算法#xff0c;复制算法以及标记/整理算法。上一章在讲解标记/清除算法时已经提到过#xff0c;这两种算法都是在此基础上演化而来的#xff0c;究竟这两种…转载自  JVM内存管理------GC算法精解复制算法与标记/整理算法本次LZ和各位分享GC最后两种算法复制算法以及标记/整理算法。上一章在讲解标记/清除算法时已经提到过这两种算法都是在此基础上演化而来的究竟这两种算法优化了之前标记/清除算法的哪些问题呢复制算法我们首先一起来看一下复制算法的做法复制算法将内存划分为两个区间在任意时间点所有动态分配的对象都只能分配在其中一个区间称为活动区间而另外一个区间称为空闲区间则是空闲的。当有效内存空间耗尽时JVM将暂停程序运行开启复制算法GC线程。接下来GC线程会将活动区间内的存活对象全部复制到空闲区间且严格按照内存地址依次排列与此同时GC线程将更新存活对象的内存引用地址指向新的内存地址。此时空闲区间已经与活动区间交换而垃圾对象现在已经全部留在了原来的活动区间也就是现在的空闲区间。事实上在活动区间转换为空间区间的同时垃圾对象已经被一次性全部回收。听起来复杂吗其实一点也不复杂有了上一章的基础相信各位理解这个算法不会费太多力气。LZ给各位绘制一幅图来说明问题如下所示。其实这个图依然是上一章的例子只不过此时内存被复制算法分成了两部分下面我们看下当复制算法的GC线程处理之后两个区域会变成什么样子如下所示。可以看到1和4号对象被清除了而2、3、5、6号对象则是规则的排列在刚才的空闲区间也就是现在的活动区间之内。此时左半部分已经变成了空闲区间不难想象在下一次GC之后左边将会再次变成活动区间。很明显复制算法弥补了标记/清除算法中内存布局混乱的缺点。不过与此同时它的缺点也是相当明显的。1、它浪费了一半的内存这太要命了。2、如果对象的存活率很高我们可以极端一点假设是100%存活那么我们需要将所有对象都复制一遍并将所有引用地址重置一遍。复制这一工作所花费的时间在对象存活率达到一定程度时将会变的不可忽视。所以从以上描述不难看出复制算法要想使用最起码对象的存活率要非常低才行而且最重要的是我们必须要克服50%内存的浪费。标记/整理算法标记/整理算法与标记/清除算法非常相似它也是分为两个阶段标记和整理。下面LZ给各位介绍一下这两个阶段都做了什么。标记它的第一个阶段与标记/清除算法是一模一样的均是遍历GC Roots然后将存活的对象标记。整理移动所有存活的对象且按照内存地址次序依次排列然后将末端内存地址以后的内存全部回收。因此第二阶段才称为整理阶段。它GC前后的图示与复制算法的图非常相似只不过没有了活动区间和空闲区间的区别而过程又与标记/清除算法非常相似我们来看GC前内存中对象的状态与布局如下图所示。这张图其实与标记/清楚算法一模一样只是LZ为了方便表示内存规则的连续排列加了一个矩形表示内存区域。倘若此时GC线程开始工作那么紧接着开始的就是标记阶段了。此阶段与标记/清除算法的标记阶段是一样一样的我们看标记阶段过后对象的状态如下图。没什么可解释的接下来便应该是整理阶段了。我们来看当整理阶段处理完以后内存的布局是如何的如下图。可以看到标记的存活对象将会被整理按照内存地址依次排列而未被标记的内存会被清理掉。如此一来当我们需要给新对象分配内存时JVM只需要持有一个内存的起始地址即可这比维护一个空闲列表显然少了许多开销。不难看出标记/整理算法不仅可以弥补标记/清除算法当中内存区域分散的缺点也消除了复制算法当中内存减半的高额代价可谓是一举两得一箭双雕一石两鸟一。。。。一女两男不过任何算法都会有其缺点标记/整理算法唯一的缺点就是效率也不高不仅要标记所有存活对象还要整理所有存活对象的引用地址。从效率上来说标记/整理算法要低于复制算法。算法总结这里LZ给各位总结一下三个算法的共同点以及它们各自的优势劣势让各位对比一下想必会更加清晰。它们的共同点主要有以下两点。1、三个算法都基于根搜索算法去判断一个对象是否应该被回收而支撑根搜索算法可以正常工作的理论依据就是语法中变量作用域的相关内容。因此要想防止内存泄露最根本的办法就是掌握好变量作用域而不应该使用前面内存管理杂谈一章中所提到的C/C式内存管理方式。2、在GC线程开启时或者说GC过程开始时它们都要暂停应用程序stop the world。它们的区别LZ按照下面几点来给各位展示。表示前者要优于后者表示两者效果一样效率复制算法标记/整理算法标记/清除算法此处的效率只是简单的对比时间复杂度实际情况不一定如此。内存整齐度复制算法标记/整理算法标记/清除算法。内存利用率标记/整理算法标记/清除算法复制算法。可以看到标记/清除算法是比较落后的算法了但是后两种算法却是在此基础上建立的俗话说“吃水不忘挖井人”因此各位也莫要忘记了标记/清除这一算法前辈。而且在某些时候标记/清除也会有用武之地。结束语到此我们已经将三个算法了解清楚了可以看出效率上来说复制算法是当之无愧的老大但是却浪费了太多内存而为了尽量兼顾上面所提到的三个指标标记/整理算法相对来说更平滑一些但效率上依然不尽如人意它比复制算法多了一个标记的阶段又比标记/清除多了一个整理内存的过程。难道就没有一种最优算法吗当然是没有的这个世界是公平的任何东西都有两面性试想一下你怎么可能找到一个又漂亮又勤快又有钱又通情达理性格又合适家境也合适身高长相等等等等都合适的女人就算你找到了至少有一点这个女人也肯定不满足那就是多半不会恰巧又爱上了与LZ相似的各位苦逼猿友们。你是不是想说你比LZ强太多了那LZ只想对你说高富帅是不会爬在电脑前看技术文章的0.0。但是古人就是给力古人说了找媳妇不一定要找最好的而是要找最合适的听完这句话瞬间感觉世界美好了许多。算法也是一样的没有最好的算法只有最合适的算法。 既然这三种算法都各有缺陷高人们自然不会容许这种情况发生。因此高人们提出可以根据对象的不同特性使用不同的算法处理类似于萝卜白菜各有所爱的原理。于是奇迹发生了高人们终于找到了GC算法中的神级算法-----分代搜集算法。
http://www.pierceye.com/news/635364/

相关文章:

  • 找人做效果图那个网站网站开发语言 asp
  • 山东省山东省建设厅网站首页百度助手免费下载
  • 北京网站建设认百度非企推广开户
  • 厦门模板建站系统网站icp备案信息注册
  • 网站建设维护人员多语言网站开发
  • 网站开发 论文大连微信公众号开发公司
  • 珠海网站建设王道下拉惠烟台网站制作专业
  • 用php做网站要用构架吗ios开发者模式
  • 如何实现一个制作好的网站wordpress cdn
  • 成都网站商城建设深圳制作网站制作公司哪家好
  • 谁可以做网站开发公司空置房拨款合同
  • seo网站管理网站建设信(信科网络)
  • 做网站需要哪些东西网站设计报价单模板
  • 合肥家居网站建设怎么样网站建设与维护中
  • 淘宝app网站建设做网页设计可以参考哪些网站
  • 合作建设网站协议江门seo计费管理
  • 企业管理网站模板保定网站制作设计哪个公司好
  • 物流网站查询优秀设计赏析网站
  • 设计分享网站网站建设资料需要公司提交的吗
  • 广州网站站建设培训html用户登录注册页面代码
  • 网站建设怎么购买域名怎么屏蔽2345网址导航
  • 物流网站建设推广wordpress安全配置文件
  • 做网站用哪个服务器不用备案宣传网站设计
  • 网站建设哪种语言好电子商务型网站建设
  • 广州网站建设平台网站怎么做必须交钱吗
  • 做网站费免图片网站背景图网站
  • 上海电商网站开发公司门户网站建设 总结
  • 网站产品类别顺序如果修改wordpress多城市seo
  • 做网站托管的好处公司erp系统
  • 管局备案网站高端定制网站的特点