程序员别唬我系列之:内存泄漏

6 评论 22304 浏览 28 收藏 5 分钟

关于内存泄漏,你造吗?

大富翁叫小明,一辈子赚了不少钱,但始终没什么大成就,就只有钱,每天各种不开心,学社会名流,也搞了一个基金。

别人家的基金都是支持白血病研究,支持智能技术发展,支持乡村教育等等,他的基金,主要是瞄准民生,救济穷人,穷人谁最近手头紧,就可以来借钱应急,规定周期再还钱,不收利息。

小明真是为老百姓做了一件大好事,村头的王婶头脑最灵活,心想“他娘的,先借10000来,存进理财通,一个月还能多赚几十,到时候再还回去”,隔壁的王叔叔也不在话下,给他儿子买了一辆摩托,就这样,全村人每个人都在小明那里借了钱,每个人都对小明歌功颂德,小明也不吝啬,承诺乡亲们的,都兑现了。

几个月后,到了还钱的时候,是这样的景象:

  • 王婶跟邻村的朴大夫跑路了。
  • 老王因为儿子的摩托撞人,他儿子还牛逼的大喊“我爸是老王”,被打老虎了。
  • 还有些年轻小伙,手里有了两个钱,开始赌博,大部分人都输精光。
  • 准备还钱的人都说,他们都还不起,我凭啥还钱。

小明彻底懵逼了,残酷的现实令他心灰意冷,投湖自尽。

程序员嘴里常说的「内存泄漏」可完全类比以上案例,我们来还原。

计算机所有程序都是在内存中运行,这是大前提,如果你不知道这个原理,那你需要背诵并牢记在心。

内存是有大小限制的,买mac的时候,你肯定也关心过,内存到底是4G,还是8G,内存越大,能并行跑的程序越多,电脑越流畅。

我们把内存想象成码好的砖块儿,每一块砖都是内存中的一个字节,这样一个4G的内存有多少块儿砖已经确定了,在这台计算机中,所有程序只能用这4G的内存做事情,如果没有了,就真的没有了(小明钱的数量,对应了内存大小)。

程序员做了很多个程序,质量良莠不齐,有的用的内存资源多,有的用的少,但这还不是最关键的。就像上文中的几个主人公,申请了内存资源,但却不还回来,导致内存被消耗殆尽,后面电脑产生了死机,蓝屏,运行缓慢,卡顿等各种奇怪现象,这种由于程序员申请了内存,但没有释放内存,导致内存一直处于被消耗的状态,称谓「内存泄漏」。

「内存泄漏」有救吗?

  1. 产品经理要经常做好程序员鼓励师的工作,“告诫”程序员要永远保持敬畏之心,不要觉得“天晴了,雨停了,你就觉得你行了”,永远记得申请内存要释放,不要在内存这种是非问题上犯错误。
  2. “你有病啊?是啊,你有药吗?”,治疗内存问题是有药的,不同平台上有不同的内存诊断与Debug工具,利用工具排查要比程序员目测检查效率更高,效果更好。

#专栏作家#

给产品经理讲技术,微信公众号(pm_teacher),人人都是产品经理专栏作家。资深程序猿,专注客户端开发若干年,对前端、后台技术略懂,热衷于对新的科技领域的探索。

本文原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自PEXELS,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 写得不错哦

    来自广东 回复
  2. docker 经常OOM

    回复
  3. 前面那一点是什么鬼?

    回复
  4. 好可爱的文风,期待作者更新~

    来自广东 回复
  5. 替楼主补充:
    内存泄露对App直接影响是crash,属于level不高的移动端程序员,容易犯的错误,抛开老旧机型的客观原因,如果程序员告诉你,“内存泄露,内存溢出我也没办法啊” 这类一副不关我的事的话,表示他的开发水平很low。
    大部分有经验的程序员,都能有意识的解决这些问题,甚至连测试阶段都不会暴露出bug。
    作为PM没必要深入到替程序员思考该如何解决,只需要关心他们能解决or不能解决,毕竟他们有KPI。

    来自四川 回复
    1. good

      来自上海 回复