我正在开发一种需要创建和删除大量线程的软件。
当我创建线程时,内存会增加,当删除它们时(通过使用命令ps -mo THREAD -p <pid>
确认),与程序/软件相关的内存不会减少(top命令)。结果我的内存不足。
我用Valgrind检查内存错误/泄漏,我找不到任何内容。这是在debian盒子上。请让我知道问题所在。
答案 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:”的行中,您将看到可用于进程的实际内存量。