【发布时间】:2012-07-06 06:00:15
【问题描述】:
我有一个在 Solaris 中运行的 C++ 进程,它创建 3 个线程来执行某些任务。 这些线程循环执行,只要进程在运行,它就会一直运行。
但是,我看到进程的内存使用量不断增长,一旦内存使用量超过 4GB,进程核心就会转储。
有人可以就内存使用量增长背后的问题给我一些建议吗? 如何防止进程因内存耗尽而转储内核?
线程重启会有帮助吗?
欢迎指点。
【问题讨论】:
-
看起来你有内存泄漏。试试 Valgrind。
-
尝试了净化。看不到任何泄漏
-
我们需要更多信息。您使用的是原始删除和新的还是 RAII?如果您使用 RAII 并且您有泄漏,那么您有一个可怕的问题要调试,因为您的泄漏可能是由竞争条件引起的,而不是由于缺少删除或删除 []。
-
我们正在使用原始的新和删除
-
@cppcoder:好吧,那么你刚刚发现了你的问题。停止尝试手动管理内存(或其他资源,FTM),这样做时不可避免地引入的错误将会消失。是的,就是这么简单。
标签: c++ multithreading memory process