关于内存泄漏,你造吗? 大富翁叫小明,一辈子赚了不少钱,但始终没什么大成就,就只有钱,每天各种不开心,学社会名流,也搞了一个基金。 别人家的基金都是支持白血病研究,支持智能技术发展,支持乡村教育等等,他的基金,主要是瞄准民生,救济穷人,穷人谁最近手头紧,就可以来借钱应急,规定周期再还钱,不收利息。 小明真是为老百姓做了一件大好事,村头的王婶头脑最灵活,心想"他娘的,先借10000来,存进理财通,一个月还能多赚几十,到时候再还回去",隔壁的王叔叔也不在话下,给他儿子买了一辆摩托,就这样,全村人每个人都在小明那里借了钱,每个人都对小明歌功颂德,小明也不吝啬,承诺乡亲们的,都兑现了。 几个月后,到了还钱的时候,是这样的景象: 王婶跟邻村的朴大夫跑路了。 老王因为儿子的摩托撞人,他儿子还牛逼的大喊"我爸是老王",被打老虎了。 还有些年轻小伙,手里有了两个钱,开始赌博,大部分人都输精光。 准备还钱的人都说,他们都还不起,我凭啥还钱。 小明彻底懵逼了,残酷的现实令他心灰意冷,投湖自尽。 程序员嘴里常说的「内存泄漏」可完全类比以上案例,我们来还原。 计算机所有程序都是在内存中运行,这是大前提,如果你不知道这个原理,那你需要背诵并牢记在心。 内存是有大小限制的,买mac的时候,你肯定也关心过,内存到底是4G,还是8G,内存越大,能并行跑的程序越多,电脑越流畅。 我们把内存想象成码好的砖块儿,每一块砖都是内存中的一个字节,这样一个4G的内存有多少块儿砖已经确定了,在这台计算机中,所有程序只能用这4G的内存做事情,如果没有了,就真的没有了(小明钱的数量,对应了内存大小)。 程序员做了很多个程序,质量良莠不齐,有的用的内存资源多,有的用的少,但这还不是最关键的。就像上文中的几个主人公,申请了内存资源,但却不还回来,导致内存被消耗殆尽,后面电脑产生了死机,蓝屏,运行缓慢,卡顿等各种奇怪现象,这种由于程序员申请了内存,但没有释放内存,导致内存一直处于被消耗的状态,称谓「内存泄漏」。 「内存泄漏」有救吗? 产品经理要经常做好程序员鼓励师的工作,"告诫"程序员要永远保持敬畏之心,不要觉得"天晴了,雨停了,你就觉得你行了",永远记得申请内存要释放,不要在内存这种是非问题上犯错误。 "你有病啊?是啊,你有药吗?",治疗内存问题是有药的,不同平台上有不同的内存诊断与Debug工具,利用工具排查要比程序员目测检查效率更高,效果更好。