程序員別唬我系列之:內存泄漏

6 評論 22321 瀏覽 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

      來自上海 回復