转载

【技术小说连载】我在JVM公司的那些年(四)——工位调整

【技术小说连载】我在JVM公司的那些年(四)——工位调整

小说连载系列是我第一次尝试的新的技术讲解方式,希望通过小说的形式将技术细节讲解清楚。

第一篇中长篇连载小说《我在JVM公司的那些年》,主要讲解JVM内部的一些原理,希望大家能够喜欢,多多支持。

郑重声明:小说人物和故事情节均是原创,未经同意禁止任何形式的转载,侵权将进入法律程序。大佬除外。

欢迎大家转发文章,谢谢!

本节知识点预告:标记——复制算法。

大家好,我叫小史,是一个非科班程序员 …… 哦,不,在这部小说中,我是一个 java 对象。

前情回顾:

【技术小说连载】我在JVM公司的那些年(一)——奇怪的面试

【技术小说连载】我在JVM公司的那些年(二)——残酷的制度

【技术小说连载】我在JVM公司的那些年(三)——恐怖的垃圾回收

还没从刚刚的垃圾回收缓过神来,大伙儿都忙着抢占工位了,只见 Survior1区 的老油条们赶紧抢占了 Survior2区 的好的工位。

师兄抢了一个远离走道的位置,这样不会被人打扰。

我过去找到师兄问到:“ Survior2区 不是不坐人吗?怎么现在大家都跑到 Survior2 来了?”

师兄:“这也是公司的制度,进行垃圾回收之后, eden区和Survior1区留下的员工都会被转移到Survior2区 ,并且工位从前往后排列,这叫 标记——复制算法 。”

【技术小说连载】我在JVM公司的那些年(四)——工位调整

我:“为啥要这样呢?这样工位移来移去的不是很麻烦吗?”

师兄:“这你就有所不知了,这是公司的一位高管,吕老师发明的制度。”

吕老师的故事

师兄:“吕老师刚进公司的时候,还是和你差不多大,当时我们在进行垃圾回收的时候,用的还是 标记——清除算法 。”

小史:“这是什么算法?”

师兄:“这种算法很简单,也没有分这么多区,就是看看哪些人的引用计数是 0 ,然后 直接把他们清理出去,工位空出 。”

【技术小说连载】我在JVM公司的那些年(四)——工位调整

小史:“对呀,这样不是挺好的吗?”

师兄:“但是 一个个清理工位也是不容易的事情 ,你也知道,我们这边裁员比例高得厉害,刚刚你也看见了,裁掉了 98% 的人, 意味着我们要一个个地清理98%的工位,这个工作量还是挺大的 。”

小史:“哦,我明白了,与其清理 98% 的工位,不如让剩下的2 % 的人自己换个位置。”

师兄:“这只是其一,其实一开始公司也没有改变制度,直到发生了一件事情。”

师兄:“那年我们开拓新业务,一下子招进来 100 多人,但是却发现 没有这么多连续的工位 。频繁的垃圾回收导致了大量的 工位碎片 。”

【技术小说连载】我在JVM公司的那些年(四)——工位调整

师兄:“这下这个团队只能分开坐,很快他们就开始抗议了,这时候吕老师把他的设计讲了出来。”

吕老师:“我建议 把新生代区分为三个区,eden区,Survior1区和Survior2区 。”

吕老师:“一开始的时候, 新来的同事都在eden区 。”

【技术小说连载】我在JVM公司的那些年(四)——工位调整

吕老师:“ 当进行第一次垃圾回收的时候,eden区上留下来的同事就移动到Survior1区,然后把eden整体清空 。这样,新来的同事在 eden 区就有连续工位。”

【技术小说连载】我在JVM公司的那些年(四)——工位调整

吕老师:“ 当第二次垃圾回收的时候,eden区和Survior1区留下来的同事就移动到Survior2区,然后把eden区和Survior1区清空 。”

【技术小说连载】我在JVM公司的那些年(四)——工位调整

吕老师:“ 当第三次垃圾回收的时候,eden区和Survior2区留下来的同事就移动到Survior1区,然后把eden区和Survior2区清空 。以此类推。”

【技术小说连载】我在JVM公司的那些年(四)——工位调整

这时候马上就有其他同事提出质疑:“也就是说 Survior1区Survior2区 是交替使用对吧?”

吕老师:“是的。”

其他同事:“但是你这样移来移去有什么意义呢?”

吕老师:“首先不需要一个一个去清理 eden 区或者 Survior 区的工位,要知道, 把一个区整体直接清空比一个一个工位清理要轻松很多 。其次就是 解决了工位碎片的问题 。”

公司高层觉得这个方案不错,决定试运行一段时间。

结果果然提高了效率,也没有出现一个团队分配不到连续工位的情况了。

后来公司就采用吕老师的方案,吕老师也很快晋升到了公司高层,坐到了 老年代 工作区。

听了吕老师的故事,小史竟有一丝敬仰之情,自己也想做一个改变公司制度的人。

(未完待续……)

通过这第一次垃圾回收,小史对公司的制度也有了更加全面的了解,自己在公司将如何发展?欲知后事如何,请听下回分解。

小结

目前的垃圾回收器,在新生代区基本都是使用标记——复制算法,这样能够提高清理效率,有效避免内存碎片。

下节知识点预告:循环引用

第一次尝试写技术小说,如果你喜欢这种形式,麻烦动动手指转发一下,你不经意间的动作,可能就会给大家带来一部伟大的技术小说。

【技术小说连载】我在JVM公司的那些年(四)——工位调整

原文  http://mp.weixin.qq.com/s?__biz=MzIzMTE1ODkyNQ==&mid=2649411740&idx=1&sn=b94cbc6a1ecd4a6862ba651eab7bd2cb
正文到此结束
Loading...