2012-09-25 176 views
4

有什麼策略來說明進程消耗的內存?例如,我有一個程序,而在舊版本中,它的內存使用並不理想,並沒有在正確的時間發佈,這意味着它在分配上的時間比它應該保持的時間長。請注意,我並不是說它泄露了。該程序的新版本對算法進行了修改,現在內存在程序的生命週期中很快就會發布。如何跟蹤這個?一些想到的方法是:編寫一個包裝libc/libstdC++的malloc/new替換庫,以某種方式使用valgrind來執行此操作,或者使用ps對進程使用的內存進行採樣並繪製圖形?佔內存消耗

+2

[使用Valgrind對內存進行採樣並繪製圖形,你說?](http://valgrind.org/docs/manual/ms-manual.html#ms-manual.theoutputgraph) – BoBTFish

回答

6

如果你不想使用第三方軟件(有一些來自AMD,英特爾,valgrind應該有「山體」工具),你可以看看 Mtrace

幾乎做了你計劃的內存分配。

寧願建議您使用valgrinds地塊工具,它沒有一個像樣的GUI /圖形,但顯示procentuals相當準確

+0

ah mtrace。這也是一個不錯的選擇。 –

2

使用PS來分析使用的內存......看到這真棒SOF問題之前:How to measure actual memory usage of an application or process?

但是,只要你確定ps的限制,你可以使用crontab創建一個每N秒/分鐘運行一次的作業......將ps aux的結果附加到一個文件中...然後你可以使用電子表格隨着時間的推移繪製內存結果的軟件。

過去我已經成功做到這一點。

Valgrind的,然而,可能是一個更好的選擇:http://valgrind.org/docs/manual/quick-start.html

你可以做這個很類似的東西。