有趣的"記憶體洩漏"
阿新 • • 發佈:2020-11-25
有趣的"記憶體洩漏"
原總結除錯vs記憶體洩漏procexp說明
今天的文章比較短,基本上全在視訊裡了。
這是一份有意思的 “記憶體洩漏” 視訊。加上引號是因為雖然可以稱作記憶體洩漏,但是又算不上真正意義上的記憶體洩漏。因為雖然短時間內記憶體暴增,但終歸還是能釋放掉的。
其實,這個 “記憶體洩漏” 背後隱藏著一個序列化/反序列化的 bug
。很早之前就碰到了這個問題,只不過當時並沒有錄下來。當時的情況比現在更加明顯——記憶體很快的從 1 GB
增長到 5 GB
左右,然後再釋放掉,再增長,再釋放,如此往復。不像這次,增長到 4 GB
多的時候,會有一個比較長的停留,然後才釋放。
這個問題的根本原因是序列化與反序列化不匹配導致的。在特定環境下定位並解決這種問題是相對容易的,因為問題範圍很小,而且對相關原始碼比較熟悉。具體排除過程沒什麼好說的。
其實,定位這種問題可以像我在視訊裡那樣用 process explorer
的執行緒檢視功能,粗略檢視一下原因。運氣好的話,基本可以很快定位。
話不多說,欣賞視訊吧!注意視訊中紅色箭頭和紅色方框高亮的部分。