監測所用的memory

看板Programming作者 (陳揚和)時間16年前 (2009/04/22 14:15), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
剛剛才聽說可以在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
我比較懷疑32bit OS new的出3G嗎?
04/23 00:10, 1F

04/23 00:11, , 2F
更不用提有沒有整塊的問題了...
04/23 00:11, 2F

04/23 00:50, , 3F
是64bits machine.. 而且那台有12G mem
04/23 00:50, 3F
文章代碼(AID): #19xhOEuP (Programming)