程序員別唬我系列之:內存泄漏
關于內存泄漏,你造嗎?
大富翁叫小明,一輩子賺了不少錢,但始終沒什么大成就,就只有錢,每天各種不開心,學社會名流,也搞了一個基金。
別人家的基金都是支持白血病研究,支持智能技術發展,支持鄉村教育等等,他的基金,主要是瞄準民生,救濟窮人,窮人誰最近手頭緊,就可以來借錢應急,規定周期再還錢,不收利息。
小明真是為老百姓做了一件大好事,村頭的王嬸頭腦最靈活,心想“他娘的,先借10000來,存進理財通,一個月還能多賺幾十,到時候再還回去”,隔壁的王叔叔也不在話下,給他兒子買了一輛摩托,就這樣,全村人每個人都在小明那里借了錢,每個人都對小明歌功頌德,小明也不吝嗇,承諾鄉親們的,都兌現了。
幾個月后,到了還錢的時候,是這樣的景象:
- 王嬸跟鄰村的樸大夫跑路了。
- 老王因為兒子的摩托撞人,他兒子還牛逼的大喊“我爸是老王”,被打老虎了。
- 還有些年輕小伙,手里有了兩個錢,開始賭博,大部分人都輸精光。
- 準備還錢的人都說,他們都還不起,我憑啥還錢。
小明徹底懵逼了,殘酷的現實令他心灰意冷,投湖自盡。
程序員嘴里常說的「內存泄漏」可完全類比以上案例,我們來還原。
計算機所有程序都是在內存中運行,這是大前提,如果你不知道這個原理,那你需要背誦并牢記在心。
內存是有大小限制的,買mac的時候,你肯定也關心過,內存到底是4G,還是8G,內存越大,能并行跑的程序越多,電腦越流暢。
我們把內存想象成碼好的磚塊兒,每一塊磚都是內存中的一個字節,這樣一個4G的內存有多少塊兒磚已經確定了,在這臺計算機中,所有程序只能用這4G的內存做事情,如果沒有了,就真的沒有了(小明錢的數量,對應了內存大?。?。
程序員做了很多個程序,質量良莠不齊,有的用的內存資源多,有的用的少,但這還不是最關鍵的。就像上文中的幾個主人公,申請了內存資源,但卻不還回來,導致內存被消耗殆盡,后面電腦產生了死機,藍屏,運行緩慢,卡頓等各種奇怪現象,這種由于程序員申請了內存,但沒有釋放內存,導致內存一直處于被消耗的狀態,稱謂「內存泄漏」。
「內存泄漏」有救嗎?
- 產品經理要經常做好程序員鼓勵師的工作,“告誡”程序員要永遠保持敬畏之心,不要覺得“天晴了,雨停了,你就覺得你行了”,永遠記得申請內存要釋放,不要在內存這種是非問題上犯錯誤。
- “你有病???是啊,你有藥嗎?”,治療內存問題是有藥的,不同平臺上有不同的內存診斷與Debug工具,利用工具排查要比程序員目測檢查效率更高,效果更好。
#專欄作家#
給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作家。資深程序猿,專注客戶端開發若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。
本文原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自PEXELS,基于CC0協議
寫得不錯哦
docker 經常OOM
前面那一點是什么鬼?
好可愛的文風,期待作者更新~
替樓主補充:
內存泄露對App直接影響是crash,屬于level不高的移動端程序員,容易犯的錯誤,拋開老舊機型的客觀原因,如果程序員告訴你,“內存泄露,內存溢出我也沒辦法啊” 這類一副不關我的事的話,表示他的開發水平很low。
大部分有經驗的程序員,都能有意識的解決這些問題,甚至連測試階段都不會暴露出bug。
作為PM沒必要深入到替程序員思考該如何解決,只需要關心他們能解決or不能解決,畢竟他們有KPI。
good