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

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

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

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

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

本节知识点预告:新生代三区,垃圾回收。

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

前情回顾:

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

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

吃完午饭,师兄带我了解了一下我们公司工位的分布。

师兄:“我们都是 java 对象,所以我们都坐在 堆内存 这个区域,你看,堆内存区域分为两个主要的区域,一个是 新生代 ,这里坐的都是新人,还有一个是 老年代 ,里面都是公司元老级人物,工龄达到 15 的员工才有资格去老年代。”

原来在 JVM 公司,会根据员工的工龄来安排工位。

师兄接着说:“在新生代里,又分为三个区域, eden区 ,这里都是刚进公司的人,比如你,就坐在 eden 区。 Survior1区和Survior2区 ,这都是经历过一次以上的垃圾回收之后的人坐的地方。”

我看了下,师兄就坐在 Survior1 区,可恶的黑老大也在 Survior1 区,而 Survior2 区却没人坐。

我:“为啥 Survior2 区没人坐呢?”

师兄:“等到公司进行垃圾回收的时候你就知道了。”

我:“我还有个问题啊,为啥 Eden 区这么大,而 Survior1Survior2 区却有点小呢?”

师兄:“公司每年都招人很多,招进来都放在 Eden 区,但是里面 很少有人能够熬过第一轮垃圾回收 ,所以实际上能够留下来的人并不多, Survior1Survior2 区没必要这么大。”

我倒吸一口凉气,原来这第一轮垃圾回收就这么残酷。

恐怖的垃圾回收

下午正干活呢,突然一队穿着警服的人冲进来大声吼到:“别干啦,停下,把你们的工牌拿出来准备好。”

面对这突如其来的场面,我不知所措,这家公司这么粗鲁的吗?

我慢慢回过神来,这应该就是所谓的 垃圾回收 吧?但是都不提前打声招呼吗?

这时,从警队队尾慢慢走来一个人,这人穿得温文尔雅,眼神里却冒着杀气。这人是 垃圾回收器

他用不大但极有穿透力的声音说道:“今天有 98% 的人要走。”

说完,命令警队把引用计数为 0 的人全部抓起来,押送出了公司。

整个过程,没有一个人敢说话,就连之前嚣张至极的黑老大,现在也跟一只温顺的小猫一样,趴在工位上一动不动。

公司里安静极了,地上掉根针都能听见。

垃圾回收器:“行了,剩下的人自己调整工位吧,好好干,希望下次还能再看见你们。”

说完,垃圾回收器转身带着警队离开了。

我又看了看我的工牌, 工龄加一 了,原来经历过一次垃圾回收,工龄就会增加一呀。

(未完待续……)

垃圾回收是十分恐怖的过程,好在小史挺过了这第一轮,等待他的会是什么?欲知后事如何,请听下回分解。

小结

JVM的堆内存分为两个区,新生代和老年代,达到一定年龄的对象会放到老年代。新生代又分为三个区,Eden区,Survior1区和Survior2区,刚进入JVM还没有经过垃圾回收的对象被分配在Eden区。

下节知识点预告:内存清理算法

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