JVM中也有并发GC,CMS机制-创新互联

当初看文档的时候,了解到.net CLR中的Background GC机制,它类似于并发GC,当使得在做GC动作是,能够同时进行内存分配。这种机制显著的减少的stop the world这种事情,使得GC的干扰最小化。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、雅安服务器托管、营销软件、网站建设、泰和网站维护、网站推广。

当初认为.net这招非常优秀,足以鄙视JAVA,前几天看JVM的书,发现JVM也有类似的机制,但是不叫后台线程,而是称作CMS(Concurrent Mark Sweep)。

从名字就可以看出并发标记清除的意思。CMS机制仅针对老年代上的垃圾(.net的后台GC只在第2代上运行。年轻代上的垃圾由其他回收算法收集),它运行时,分成4个步骤:

初始标记,并发标记,重新标记和最后异步并发清除,其中初始标记和重新标记仍然会stop the world。从网上扒一张图,可以看到

JVM中也有并发GC,CMS机制

初始标记其实就是标记root对象,速度很快,而并发标记,就是顺着root对象的引用链开始顺藤摸瓜的做标记,并发的进行标记,可以看到,此处GC线程和用户线程是同时运行的。

重新标记其实是对并发标记的一个补充修正,因为有些对象在并发标记后,又被释放掉或者又被重新引用,导致之前的标记不准确,重新标记一次。重新标记这个动作的速度是非常快的。接着并发清理时,又是和用户线程同时进行。因此,相比非并发的处理,这种机制有助于减少GC对用户程序的影响。

不过CMS也有缺点,它虽然不会stop the world,但是会占用CPU资源,会拖慢程序。还有一个缺点CMS收集器无法处理浮动垃圾,可能出现“Concurrent Mode Failure”失败(至于为什么会出现这种失败,书中也没说的很清楚)。这种失败导致另一次Full GC的产生。这招反而会影响性能。最后一个缺点是大多数标记清除算法共有的缺点,就是在回收后,可能会导致大量的碎片空间,当分配大对象的时候,但碎片太多找不到连续的大空间,也会导致一次Full GC。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

网站栏目:JVM中也有并发GC,CMS机制-创新互联
文章出自:https://www.cdcxhl.com/article22/csidcc.html

成都网站建设公司_创新互联,为您提供用户体验定制开发网站排名微信小程序企业建站响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名