小说连载系列是我第一次尝试的新的技术讲解方式,希望通过小说的形式将技术细节讲解清楚。
第一篇中长篇连载小说《我在JVM公司的那些年》,主要讲解JVM内部的一些原理,希望大家能够喜欢,多多支持。
郑重声明:小说人物和故事情节均是原创,未经同意禁止任何形式的转载,侵权将进入法律程序。大佬除外。
欢迎大家转发文章,谢谢!
本节知识点预告:四种引用。
大家好,我叫小史,是一个非科班程序员 …… 哦,不,在这部小说中,我是一个 java 对象。
前情回顾:
【技术小说连载】我在JVM公司的那些年(一)——奇怪的面试
【技术小说连载】我在JVM公司的那些年(二)——残酷的制度
【技术小说连载】我在JVM公司的那些年(三)——恐怖的垃圾回收
【技术小说连载】我在JVM公司的那些年(四)——工位调整
【技术小说连载】我在JVM公司的那些年(五)——主动出击
【技术小说连载】我在JVM公司的那些年(六)——智斗黑老大
我轻蔑地看着黑老大说:“你难道不知道 引用分为四种 吗?”
黑老大瞪大了眼睛:“什么?!”
天天在公司混日子,连最基本的业务都不熟悉,最后被开了都不知道怎么回事,也算是罪有应得吧。
我:“入职新人培训的时候就说过了,咱们公司的 引用分为4种,强引用、软引用、弱引用和虚引用。 ”
我:“培训的老师还告诫我们,最常用的就是强引用,如果真的是对你有用的人,一定要用 强引用 ,对于这种员工,公司如果发现工位资源不足, 宁愿抛出OutOfMemory的异常也不会将他们裁员 。”
黑老大:“你给我的不是强引用?是软引用?”
我:“软引用? 软引用引用的对象,在垃圾回收时,如果发现工位资源不足,即使被引用了依然会被回收, 但是在工位资源充足的情况下是不会回收的。 ”
黑老大:“但是我们现在工位明明充足呀,难道你给我的是弱引用?”
我:“总算开窍了。 弱引用引用的对象,在垃圾回收时,不管工位资源充不充足,都会被回收。 ”
黑老大:“我明白了,你给我的是弱引用。那最后的虚引用又是怎么回事?”
平时不务正业,被开了倒是出奇地好学。
我不耐烦地说:“虚引用看名字就知道,是一个 形同虚设的引用 ,行了,你安心走吧。”
黑老大恶狠狠地说:“你别得意得太早,我还会回来的。”
不对劲
终于干掉了黑老大,我一下子成了公司的小明星,走到哪里都有人回头看我,弄得我都有点飘了。
不过过了几天我就发现,大家看我的眼神开始不对劲,与其说是赞许,不如说是担心,大家的眼神里都有一丝怜悯。
怎么回事?我找到师兄。
我:“为什么你们看我的眼神这么奇怪?”
师兄也面露难色:“我实话跟你说了吧,前两天黑老大找到我们,给了我们一大笔钱, 让我们在下一次垃圾回收的时候,把你的引用去掉 。”
这个可恶的黑老大,走了也要把我拉下水。
我:“那你们都照做啦?”
师兄:“黑老大拿出了所有的积蓄,把所有和你有关系的人都给买断了,说是要和你玉石俱焚,他这次是铁了心要把你弄出去呀。而且如果不合作,他还会对我们的家人下手,小史,对不起,你赶紧找下家吧。”
我也不想为难师兄:“行,明白了,谢谢师兄告诉我这些。”
偶遇吕老师
我 不知道什么时候会是下一次垃圾回收 ,但是我知道,那就是我要离开公司的日子,我一个人在公司里喝闷酒。
突然一个人拍了拍我的肩膀:“你是小史吧?”
我回头一看,一个笑眯眯的大哥哥正在看着我:“对,我是小史,你是哪位?”
大哥哥:“你叫我吕老师就好。”
我:“吕老师?就是那个让公司放弃 标记——清除算法 而改用 标记——复制算法 的吕老师?”
吕老师:“正是在下,所以我也想认识一下让公司放弃 引用计数算法 而改用 可达性分析算法 的小史君呀,哈哈!”
我:“幸会幸会,很高兴认识你。”
我给吕老师满上酒:“不过,我很快就要离开公司了。”
吕老师:“噢?怎么回事?”
我把事情一五一十告诉吕老师,并且抱着最后一丝希望:“吕老师,要不,你引用我吧?”
吕老师:“我不能随随便便引用你,这是违反公司规定的,但是我有一个办法,你可以试一试。”
(未完待续……)
吕老师有什么办法,能够帮助小史死里逃生? 欲知后事如何,请听下回分解。
在JVM中,引用分为四种,强引用、软引用、弱引用和虚引用,不同的引用强度对应着不同的垃圾回收行为。
下节知识点预告: finalize方法
第一次尝试写技术小说,如果你喜欢这种形式,麻烦动动手指转发一下,你不经意间的动作,可能就会给大家带来一部伟大的技术小说。