2012-12-03 95 views
3

我有程序在其中工作得很好。但它在被殺死後的5-6天內正常工作SIGKILL。當我觀察到內存是問題的時候,我在任何時候都進行了嚴格的分配。在程序中增加虛擬內存大小C++

我正在使用linux top命令監視內存使用情況。

截至目前該程序工作正常。但是,top命令中的VIRT虛擬內存屬性緩慢增加緩慢。爲什麼 ?我在任何需要的地方釋放資源。

在此先感謝。 :)

+3

「我在任何需要的地方釋放東西。」如果那是真的,那麼你的程序只是/需要/更多的內存,但我不認爲這是真的,你應該通過一些泄漏檢查器來運行它。 – PlasmaHH

+0

程序中有內存泄漏。使用** valgrind **來查找內存泄漏。 – tuxuday

+0

@PlasmaHH「程序只是/需要/更多的時間內存」。那是什麼意思?無論如何,我分配內存一旦分配知道。那麼內存消耗不應該發生嗎? – Chaitanya

回答

8

如果您正在Linux上開發,編譯您的應用程序g++ -Wall -g,改善它,直到沒有警告給出,並使用gdbvalgrind調試內存泄漏。您可能有興趣使用Boehm's conservative garbage collector

閱讀關於memory fragmentation

+1

打我吧,使用valgrind(也保證-O0)並在valgrind中使用'--leak-check = full'(但我會大大讚成修復程序而不是添加GC)。 – 111111

1

您可以檢查任何內存管理不善與valgrind

嘗試運行了一段時間的應用程序,並檢查任何可能的內存問題。