2012-07-25 42 views
0

我有一個連續運行在Solaris的進程。 該進程的堆內存使用量會隨着時間的推移而不斷增加,當它超過4Gb時,進程核心轉儲量會持續增加。堆內存分析

我試圖運行與Purify的過程,但找不到任何真正泄漏內存的代碼。

有什麼方法可以分析哪些代碼負責增加的堆內存使用情況? 進程的堆內存使用量每15分鐘增加4Mb或8Mb,並且永不減少。我使用pmap命令檢查進程堆內存使用情況。

+0

這可能是你在技術上不泄漏內存,但實際上保留了某些指向它的指針。 Purify會認爲它沒問題。 – 2012-07-25 11:34:37

+0

@BoPersson你是說懸掛指針? – cppcoder 2012-07-25 11:37:09

+0

不,如果您忘記刪除其中的一部分,它們就不會晃來晃去。就像建立一個長列表,並添加東西,但一些永遠不會被刪除。 – 2012-07-25 11:41:03

回答

0

我會記錄到文件中所有與他們被稱爲找出whene的new函數被調用沒有correcsponding delete被稱爲位置調用newdelete。也許你在堆中有循環循環。

+0

什麼是循環迴路? – cppcoder 2012-07-25 11:31:25

+0

@cppcoder - 當一個對象指向另一個對象,並且該對象直接或間接指向第一個對象。 – 2012-07-25 12:26:04