C語言 一次記憶體洩露的分析的記錄

2022-02-26 18:58:40 字數 614 閱讀 8976

今天執行乙個程式,程式剛啟動時占用記憶體很小,在執行過程中發現占用的記憶體會一直增大。

用cat /proc/pid/statm的方式檢視發現也確實在一直增大。

而且這個程式移植到另外乙個平台後,會直接無法執行。

我不明白為什麼,以為**記憶體洩露了,但是這幾乎不可能啊,因為我所有的記憶體分配都是初始化時完成的,

分配了一些pool和queue,在while(1)大迴圈中根本沒有分配記憶體啊。

我然後用valgrind工具檢查了一下,當然我有一大堆記憶體分配都沒有free,但是這對我來說沒關係,因為我

while(1)中並不會繼續malloc。

然而見鬼了,整個執行過程中就是會會一直增大。

到底怎麼回事呢?怎麼回事呢?

原來是因為malloc之後,分配的記憶體直到真正用到之時才會分配,而在嵌入式平台上,好像它會提前分配好。

這個malloc的特性我當然知道,這一次之所以沒有注意到,是因為我認為我分配的記憶體是遠遠小於機器的記憶體的,即使全部占用了, 也不會一直增加,

而實際情況是,我分配的記憶體確實太大了,超過了機器的記憶體,當超過時,就直接報錯了,這個時候我直覺的反應是**洩露了,而沒有想malloc的問題。

因為我寫了乙個新庫,我以為是新庫的問題。

記CXF中的一次Non Heap記憶體洩露

最近遇到乙個webservice記憶體洩露的問題。使用jconsole連線後發現非堆記憶體和loaded classes在每次執行full gc後都會增長。classes增長的非常有規律,每次增加5000個左右。因為cxf中使用了jaxb,懷疑是jaxb被多次例項化造成的。然後使用mat,查詢dup...

記一次EventBus記憶體洩露導致的專案問題

今天遇到乙個很尷尬的問題,就是eventbus的使用過程中,在post乙個event後,於此同時,在接收event的方法中打斷點監控event的接收。這個時候我遇到很尷尬的問題,會重複接收到很多次的event事件 我當前所用的開發框架是支援將業務,資料更新,檢視更新從activity中抽離,在act...

記一次Pytorch記憶體洩露的排查與處理

模型訓練過程中記憶體占用不斷增加,訓練到30000輪左右已經占用到200g記憶體.查詢了網上的一些記憶體洩漏排查方法,使用了memory profiler objgraph pympler這三個工具進行排查 參考鏈結如下 pytorch超出記憶體 pytorch記憶體洩漏分析案例 list轉tens...