关于linux内存问题的C ++多线程程序

时间:2012-08-08 10:59:52

标签: c++ multithreading memory-leaks debian

我正在开发一种需要创建和删除大量线程的软件。

当我创建线程时,内存会增加,当删除它们时(通过使用命令ps -mo THREAD -p <pid>确认),与程序/软件相关的内存不会减少(top命令)。结果我的内存不足。

我用Valgrind检查内存错误/泄漏,我找不到任何内容。这是在debian盒子上。请让我知道问题所在。

2 个答案:

答案 0 :(得分:0)

你是如何删除线程的? 这里的注释http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_join.3.html谈到在某些情况下需要调用join以释放资源。

答案 1 :(得分:0)

你的内存不足。

您在top命令中看到的“可用内存”实际上并不是需要时可用的内存。 Linux内核尽可能地使用/可用于其页面缓存的可用内存。当进程需要内存时,内核可以丢弃该页面缓存并将该内存提供给进程。

换句话说:linux使用空闲内存,而不是让它闲置......

使用free -m:在标有“ - / + buffers / cache:”的行中,您将看到可用于进程的实际内存量。