小说连载系列是我第一次尝试的新的技术讲解方式,希望通过小说的形式将技术细节讲解清楚。
第一篇中长篇连载小说《我在JVM公司的那些年》,主要讲解JVM内部的一些原理,希望大家能够喜欢,多多支持。
郑重声明:小说人物和故事情节均是原创,未经同意禁止任何形式的转载,侵权将进入法律程序。大佬除外。
欢迎大家转发文章,谢谢!
本节知识点预告:finalize方法。
大家好,我叫小史,是一个非科班程序员 …… 哦,不,在这部小说中,我是一个 java 对象。
前情回顾:
【技术小说连载】我在JVM公司的那些年(一)——奇怪的面试
【技术小说连载】我在JVM公司的那些年(二)——残酷的制度
【技术小说连载】我在JVM公司的那些年(三)——恐怖的垃圾回收
【技术小说连载】我在JVM公司的那些年(四)——工位调整
【技术小说连载】我在JVM公司的那些年(五)——主动出击
【技术小说连载】我在JVM公司的那些年(六)——智斗黑老大
【技术小说连载】我在JVM公司的那些年(七)——玉石俱焚
我就像抓住了救命稻草,赶紧问吕老师:“什么方法?”
吕老师:“这是一个非常古老的方法了,知道这个方法的人不多,而且现在公司也不推荐大家这样做。但是你现在情况特殊,也许可以一试。”
我:“哎呀我的吕老师,你就别卖关子了,赶紧告诉我吧。”
吕老师凑到我耳朵旁:“只需如此如此 …… ”
我疑惑地看着他:“这能行吗?”
吕老师稳如狗:“放心吧,没问题的。”
听了吕老师的建议,我赶紧秘密找到师兄,把吕老师跟我说的方法一五一十告诉了师兄,并请他帮忙。
师兄也很惊讶:“还有这种方法?这能行吗?”
我表面也稳如狗:“放心吧,没问题!”
但是实际上我内心慌得一批。
这一刻终于到来,公司停止了所有业务,垃圾回收器还是像往常一样无情。
没有人引用我了,我自然没有在可达性分析的引用链中,我要被回收了,但是就在这时,垃圾回收器开口说话了。
垃圾回收器:这个对象,小史,他 覆盖了finalize方法 ,先别忙着把他赶出公司,先押送地牢。其他人都赶出公司吧!
一切都在计划中, 只要覆盖finalize方法,并且这个方法从来没被执行过,垃圾回收器就不会马上把你赶出公司 ,而是会把你放到地牢。
我跟着警卫来到了地牢,说是地牢,其实我一看就知道, 这是一个队列 ,里面的人都排队等着一个人。
过一会儿,这个人过来了,他是一个 低优先级线程 ,他的工作就是 执行我们这个队列中每个人的finalize方法 。
我和师兄早就商量好了, 在finalize方法中,我让师兄重新引用了我 ,这下我又有引用了,我知道已经大功告成,只需静静地等待出去的时机就行。
另一边,黑老大一看我已经没有在工位上,以为已经把我弄出了公司,满意地去找下家公司去了。只是他没想到,我并没有被赶出公司,而是在地牢里伺机而动。
又一次垃圾回收到来了,垃圾回收器再次通过可达性分析算法检查我们的引用,这次我已经在引用链中了,于是,我又回到了我自己的工位。
(未完待续……)
到此,小史终于彻底搞定了黑老大,他在JVM公司中还会遇到什么问题? 欲知后事如何,请听下回分解。
现在我们不推荐在 finalize 方法中去释放资源,因为它什么时候会被调用是不确定的 。
下节知识点预告:老年代
第一次尝试写技术小说,如果你喜欢这种形式,麻烦动动手指转发一下,你不经意间的动作,可能就会给大家带来一部伟大的技术小说。