【技术小说连载】我在JVM公司的那些年(三)——恐怖的垃圾回收
小说连载系列是我第一次尝试的新的技术讲解方式,希望通过小说的形式将技术细节讲解清楚。
第一篇中长篇连载小说《我在JVM公司的那些年》,主要讲解JVM内部的一些原理,希望大家能够喜欢,多多支持。
郑重声明:小说人物和故事情节均是原创,未经同意禁止任何形式的转载,侵权将进入法律程序。大佬除外。
欢迎大家转发文章,谢谢!
本节知识点预告:新生代三区,垃圾回收。
大家好,我叫小史,是一个非科班程序员……哦,不,在这部小说中,我是一个java对象。
前情回顾:
吃完午饭,师兄带我了解了一下我们公司工位的分布。
师兄:“我们都是java对象,所以我们都坐在堆内存这个区域,你看,堆内存区域分为两个主要的区域,一个是新生代,这里坐的都是新人,还有一个是老年代,里面都是公司元老级人物,工龄达到15的员工才有资格去老年代。”
原来在JVM公司,会根据员工的工龄来安排工位。
师兄接着说:“在新生代里,又分为三个区域,eden区,这里都是刚进公司的人,比如你,就坐在eden区。Survior1区和Survior2区,这都是经历过一次以上的垃圾回收之后的人坐的地方。”
我看了下,师兄就坐在Survior1区,可恶的黑老大也在Survior1区,而Survior2区却没人坐。
我:“为啥Survior2区没人坐呢?”
师兄:“等到公司进行垃圾回收的时候你就知道了。”
我:“我还有个问题啊,为啥Eden区这么大,而Survior1和Survior2区却有点小呢?”
师兄:“公司每年都招人很多,招进来都放在Eden区,但是里面很少有人能够熬过第一轮垃圾回收,所以实际上能够留下来的人并不多,Survior1和Survior2区没必要这么大。”
我倒吸一口凉气,原来这第一轮垃圾回收就这么残酷。
恐怖的垃圾回收
下午正干活呢,突然一队穿着警服的人冲进来大声吼到:“别干啦,停下,把你们的工牌拿出来准备好。”
面对这突如其来的场面,我不知所措,这家公司这么粗鲁的吗?
我慢慢回过神来,这应该就是所谓的垃圾回收吧?但是都不提前打声招呼吗?
这时,从警队队尾慢慢走来一个人,这人穿得温文尔雅,眼神里却冒着杀气。这人是垃圾回收器。
他用不大但极有穿透力的声音说道:“今天有98%的人要走。”
说完,命令警队把引用计数为0的人全部抓起来,押送出了公司。
整个过程,没有一个人敢说话,就连之前嚣张至极的黑老大,现在也跟一只温顺的小猫一样,趴在工位上一动不动。
公司里安静极了,地上掉根针都能听见。
垃圾回收器:“行了,剩下的人自己调整工位吧,好好干,希望下次还能再看见你们。”
说完,垃圾回收器转身带着警队离开了。
我又看了看我的工牌,工龄加一了,原来经历过一次垃圾回收,工龄就会增加一呀。
(未完待续……)
垃圾回收是十分恐怖的过程,好在小史挺过了这第一轮,等待他的会是什么?欲知后事如何,请听下回分解。
小结
JVM的堆内存分为两个区,新生代和老年代,达到一定年龄的对象会放到老年代。新生代又分为三个区,Eden区,Survior1区和Survior2区,刚进入JVM还没有经过垃圾回收的对象被分配在Eden区。
下节知识点预告:内存清理算法
第一次尝试写技术小说,如果你喜欢这种形式,麻烦动动手指转发一下,你不经意间的动作,可能就会给大家带来一部伟大的技术小说。