監測所用的memory
剛剛才聽說可以在c++的code中加入macro 印出現在程式使用多少memory
方法是,在linux上執行到某行要監測時 去開/proc/self/statm 的檔案
讀取現在記憶體的資訊, 有人有用過(或有這樣的macro嗎)
而且這樣還滿神奇的 難道os需要每new 一個東西就去寫一次這個檔案嗎
(雖然可能在記憶體中)
其實我會需要這樣仔細的監測(而不只用top看)是因為有靈異事件
同一個code 只差幾個printf 一個程序記憶體使用會爆炸
另一個不會.. 由於我的程式會先new一塊很大的記憶體 delete 他然後在new另一塊
強烈的懷疑compilier 在optimization 時 把它變成連續new而之後delete
我的猜想對嗎 有辦法避免嗎 還是其實是我程式其他地方有錯而不自知
另一個問題是 當我new一塊大小為3G的array時 若記憶體總共空間夠
但沒有晚整的區塊 這個部份應該是OS 幫忙處理page的吧
所以應該沒有問題才是
不知道版上有沒有人有類似的經驗
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.125.87.33
→
04/23 00:10, , 1F
04/23 00:10, 1F
→
04/23 00:11, , 2F
04/23 00:11, 2F
→
04/23 00:50, , 3F
04/23 00:50, 3F