小说连载系列是我第一次尝试的新的技术讲解方式,希望通过小说的形式将技术细节讲解清楚。
第一篇中长篇连载小说《我在JVM公司的那些年》,主要讲解JVM内部的一些原理,希望大家能够喜欢,多多支持。
郑重声明:小说人物和故事情节均是原创,未经同意禁止任何形式的转载,侵权将进入法律程序。大佬除外。
欢迎大家转发文章,谢谢!
本节知识点预告:循环引用。
大家好,我叫小史,是一个非科班程序员 …… 哦,不,在这部小说中,我是一个 java 对象。
前情回顾:
【技术小说连载】我在JVM公司的那些年(一)——奇怪的面试
【技术小说连载】我在JVM公司的那些年(二)——残酷的制度
【技术小说连载】我在JVM公司的那些年(三)——恐怖的垃圾回收
【技术小说连载】我在JVM公司的那些年(四)——工位调整
我也赶紧搬到 Survior2 区,兢兢业业地工作起来。
由于我业务能力突出,很多同事都开始引用我,什么 PersonDAO 呀, PersonCache 呀,都给我引用计数加了一。
我现在完全不愁被垃圾回收。
但是一想到下个月快到了,又要给黑老大交保护费,心里有点不爽。
我决定找点线索,究竟谁在引用黑老大?
我买了一包烟,主动过去给黑老大套近乎:“给大佬递烟。”
黑老大:“你小子还挺能来事儿,不错不错,以后保护费给你优惠点,哈哈哈。”
我表面上恭恭敬敬,实际上暗地里看了下黑老大的工牌,引用计数是 1 ,引用他的人是黑小弟。
我又看了下旁边黑小弟的工牌,引用计数是 1 ,引用他的人是黑老大。
这下我终于明白了:“闹了半天,原来这两人是 相互引用 ,公司根本没有其他人需要他们!”
很快,公司又迎来了一次垃圾回收,像往常一样,垃圾回收器让大家准备好工牌放在桌上,挨个检查引用计数为零的人,全部押送出公司。
就在垃圾回收器要离开的时候,我站起来说了一声:“且慢!”
我声音不大,但是在这原本安静的公司里却显得格外刺耳。
底下也开始议论纷纷:“这人谁呀?竟然敢和垃圾回收器说话。”
“貌似是新来的,不知道葫芦里卖的什么药。”
垃圾回收器头都没回:“有事吗?”
我战战兢兢地说:“麻烦你再检查一下这边黑老大和黑小弟二位的工牌。”
黑老大一听竟然是给他找事,狠狠地瞪了我一眼,恨不得用眼神杀死我。
我却不慌不忙,根本没有正眼看他,只是用余光扫了一下。
垃圾回收器也不是好惹的,他严厉地问:“你是在质疑我的工作?”
我恭恭敬敬地回答:“并没有, 只是虽然这两人的引用计数都是1,但是他们是相互引用,公司里再也没有第三个人需要他们,理论上应该被垃圾回收掉吧 ?”
垃圾回收器:“哦?有这等事?”
垃圾回收器走到黑老大和黑小弟旁边再次查看了他们的工牌,确实是这样,他沉默了几秒。
我从余光里看到,黑老大和黑小弟已经瑟瑟发抖,都不敢正眼看垃圾回收器。
垃圾回收器:“你说的这种情况我会考虑一下,这次就先不回收他们了。”
没想到是这样的结局,我心里咯噔一下 ……
(未完待续……)
小史以身犯险,本想借助垃圾回收器除掉黑老大,没想到差了一步,他会被打击报复吗? 欲知后事如何,请听下回分解。
引用计数的垃圾清理算法,没有办法清理循环引用,所以这种算法现在用得非常少了。
下节知识点预告:可达性分析算法
第一次尝试写技术小说,如果你喜欢这种形式,麻烦动动手指转发一下,你不经意间的动作,可能就会给大家带来一部伟大的技术小说。