簡體   English   中英

是否可以在沒有任何內存泄漏的情況下增加代碼的內存使用量?

[英]Is increase in memory usage of my code possible without any memory leak?

有一個C ++代碼可以在循環迭代中進行一些計算。 當我將代碼運行幾個小時時,看不到內存使用量的增加。 但是,當我讓它運行一整夜時,MS Performance Monitor工具(perfmon.exe)會發現內存使用量增加了50 MB,如下所示。 圖表僅適用於我的過程,不適用於整個系統。

在此處輸入圖片說明

視覺泄漏檢測器無法檢測到已實現的循環內的任何內存泄漏。 內存使用增加的原因是否可能是內存泄漏以外的原因?

可視化泄漏檢測器可能會被看起來合理的內存使用模式所迷惑,而實際上卻並非如此。 例如,如果您繼續分配一些東西,不僅忘記釋放它們,而且將指向它們的指針保存在列表中,就任何傻瓜工具所知,這看起來像是正常的內存使用。

而且,50MB的內存不足以供桌面應用程序擔心,在任何情況下,您的觀察結果都很有限,無法得出任何結論。 可能是C ++運行時的內存管理器認為這些50MB的花生值得犧牲效率,因此當有更多可用的新OS內存可用時,它可能會選擇不費心地合並相鄰的空閑塊來滿足分配請求。 為了更好地對正在發生的事情進行理論化,您需要向我們展示您的應用程序隨着時間變化的內存分配的更完整圖表。 它是連續的直坡嗎? 它是在某個點變成一條平線的斜坡嗎? 它在某處突然出現了台階嗎? 即使您完全用盡了物理內存並開始分頁之后,斜率是否仍在上升?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM