我有一個連續運行在Solaris
的進程。 該進程的堆內存使用量會隨着時間的推移而不斷增加,當它超過4Gb時,進程核心轉儲量會持續增加。堆內存分析
我試圖運行與Purify
的過程,但找不到任何真正泄漏內存的代碼。
有什麼方法可以分析哪些代碼負責增加的堆內存使用情況? 進程的堆內存使用量每15分鐘增加4Mb或8Mb,並且永不減少。我使用pmap
命令檢查進程堆內存使用情況。
我有一個連續運行在Solaris
的進程。 該進程的堆內存使用量會隨着時間的推移而不斷增加,當它超過4Gb時,進程核心轉儲量會持續增加。堆內存分析
我試圖運行與Purify
的過程,但找不到任何真正泄漏內存的代碼。
有什麼方法可以分析哪些代碼負責增加的堆內存使用情況? 進程的堆內存使用量每15分鐘增加4Mb或8Mb,並且永不減少。我使用pmap
命令檢查進程堆內存使用情況。
我會記錄到文件中所有與他們被稱爲找出whene的new
函數被調用沒有correcsponding delete
被稱爲位置調用new
和delete
。也許你在堆中有循環循環。
什麼是循環迴路? – cppcoder 2012-07-25 11:31:25
@cppcoder - 當一個對象指向另一個對象,並且該對象直接或間接指向第一個對象。 – 2012-07-25 12:26:04
這可能是你在技術上不泄漏內存,但實際上保留了某些指向它的指針。 Purify會認爲它沒問題。 – 2012-07-25 11:34:37
@BoPersson你是說懸掛指針? – cppcoder 2012-07-25 11:37:09
不,如果您忘記刪除其中的一部分,它們就不會晃來晃去。就像建立一個長列表,並添加東西,但一些永遠不會被刪除。 – 2012-07-25 11:41:03