程序員別唬我系列之:內(nèi)存泄漏

6 評(píng)論 22528 瀏覽 28 收藏 5 分鐘

關(guān)于內(nèi)存泄漏,你造嗎?

大富翁叫小明,一輩子賺了不少錢,但始終沒(méi)什么大成就,就只有錢,每天各種不開心,學(xué)社會(huì)名流,也搞了一個(gè)基金。

別人家的基金都是支持白血病研究,支持智能技術(shù)發(fā)展,支持鄉(xiāng)村教育等等,他的基金,主要是瞄準(zhǔn)民生,救濟(jì)窮人,窮人誰(shuí)最近手頭緊,就可以來(lái)借錢應(yīng)急,規(guī)定周期再還錢,不收利息。

小明真是為老百姓做了一件大好事,村頭的王嬸頭腦最靈活,心想“他娘的,先借10000來(lái),存進(jìn)理財(cái)通,一個(gè)月還能多賺幾十,到時(shí)候再還回去”,隔壁的王叔叔也不在話下,給他兒子買了一輛摩托,就這樣,全村人每個(gè)人都在小明那里借了錢,每個(gè)人都對(duì)小明歌功頌德,小明也不吝嗇,承諾鄉(xiāng)親們的,都兌現(xiàn)了。

幾個(gè)月后,到了還錢的時(shí)候,是這樣的景象:

  • 王嬸跟鄰村的樸大夫跑路了。
  • 老王因?yàn)閮鹤拥哪ν凶踩耍麅鹤舆€牛逼的大喊“我爸是老王”,被打老虎了。
  • 還有些年輕小伙,手里有了兩個(gè)錢,開始賭博,大部分人都輸精光。
  • 準(zhǔn)備還錢的人都說(shuō),他們都還不起,我憑啥還錢。

小明徹底懵逼了,殘酷的現(xiàn)實(shí)令他心灰意冷,投湖自盡。

程序員嘴里常說(shuō)的「內(nèi)存泄漏」可完全類比以上案例,我們來(lái)還原。

計(jì)算機(jī)所有程序都是在內(nèi)存中運(yùn)行,這是大前提,如果你不知道這個(gè)原理,那你需要背誦并牢記在心。

內(nèi)存是有大小限制的,買mac的時(shí)候,你肯定也關(guān)心過(guò),內(nèi)存到底是4G,還是8G,內(nèi)存越大,能并行跑的程序越多,電腦越流暢。

我們把內(nèi)存想象成碼好的磚塊兒,每一塊磚都是內(nèi)存中的一個(gè)字節(jié),這樣一個(gè)4G的內(nèi)存有多少塊兒磚已經(jīng)確定了,在這臺(tái)計(jì)算機(jī)中,所有程序只能用這4G的內(nèi)存做事情,如果沒(méi)有了,就真的沒(méi)有了(小明錢的數(shù)量,對(duì)應(yīng)了內(nèi)存大?。?。

程序員做了很多個(gè)程序,質(zhì)量良莠不齊,有的用的內(nèi)存資源多,有的用的少,但這還不是最關(guān)鍵的。就像上文中的幾個(gè)主人公,申請(qǐng)了內(nèi)存資源,但卻不還回來(lái),導(dǎo)致內(nèi)存被消耗殆盡,后面電腦產(chǎn)生了死機(jī),藍(lán)屏,運(yùn)行緩慢,卡頓等各種奇怪現(xiàn)象,這種由于程序員申請(qǐng)了內(nèi)存,但沒(méi)有釋放內(nèi)存,導(dǎo)致內(nèi)存一直處于被消耗的狀態(tài),稱謂「內(nèi)存泄漏」。

「內(nèi)存泄漏」有救嗎?

  1. 產(chǎn)品經(jīng)理要經(jīng)常做好程序員鼓勵(lì)師的工作,“告誡”程序員要永遠(yuǎn)保持敬畏之心,不要覺(jué)得“天晴了,雨停了,你就覺(jué)得你行了”,永遠(yuǎn)記得申請(qǐng)內(nèi)存要釋放,不要在內(nèi)存這種是非問(wèn)題上犯錯(cuò)誤。
  2. “你有病啊?是啊,你有藥嗎?”,治療內(nèi)存問(wèn)題是有藥的,不同平臺(tái)上有不同的內(nèi)存診斷與Debug工具,利用工具排查要比程序員目測(cè)檢查效率更高,效果更好。

#專欄作家#

給產(chǎn)品經(jīng)理講技術(shù),微信公眾號(hào)(pm_teacher),人人都是產(chǎn)品經(jīng)理專欄作家。資深程序猿,專注客戶端開發(fā)若干年,對(duì)前端、后臺(tái)技術(shù)略懂,熱衷于對(duì)新的科技領(lǐng)域的探索。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自PEXELS,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 寫得不錯(cuò)哦

    來(lái)自廣東 回復(fù)
  2. docker 經(jīng)常OOM

    回復(fù)
  3. 前面那一點(diǎn)是什么鬼?

    回復(fù)
  4. 好可愛(ài)的文風(fēng),期待作者更新~

    來(lái)自廣東 回復(fù)
  5. 替樓主補(bǔ)充:
    內(nèi)存泄露對(duì)App直接影響是crash,屬于level不高的移動(dòng)端程序員,容易犯的錯(cuò)誤,拋開老舊機(jī)型的客觀原因,如果程序員告訴你,“內(nèi)存泄露,內(nèi)存溢出我也沒(méi)辦法啊” 這類一副不關(guān)我的事的話,表示他的開發(fā)水平很low。
    大部分有經(jīng)驗(yàn)的程序員,都能有意識(shí)的解決這些問(wèn)題,甚至連測(cè)試階段都不會(huì)暴露出bug。
    作為PM沒(méi)必要深入到替程序員思考該如何解決,只需要關(guān)心他們能解決or不能解決,畢竟他們有KPI。

    來(lái)自四川 回復(fù)
    1. good

      來(lái)自上海 回復(fù)