linux - Linux 下如何知道内存去了哪里

标签 linux memory-management

我有一个长时间运行的进程,我怀疑存在内存泄漏。我使用 top 来监控每​​个进程的内存级别,没有任何进程使用超过总 RAM 的 15%。该机器有 4GB RAM,进程启动时有超过 3GB 的可用空间。该过程本身对几 MB 的数据进行非常繁重的自定义计算。它需要 100% 的单核。

随着时间的推移,内存会消失,但 top 不会责怪我长时间运行的进程。相反,“缓存”和“缓冲”内存会增加,“可用”内存会减少至 2MB。该进程最终完成其工作并顺利退出,但内存永远不会恢复。我应该担心还是这是“正常”?除了top之外还有其他工具可以提供更深入的理解吗?

谢谢。

最佳答案

这很正常。您的进程正在对缓存在内存中的文件进行操作。如果存在“内存压力”(来自其他程序的需求),那么该缓存内存将被放弃。我第一次编写一个 X 小部件来显示有多少内存是“空闲”的,我花了一段时间才习惯了空闲内存对您没有好处的想法:最好将其全部用于执行 some 一种缓存,直到其他地方需要它为止!

关于linux - Linux 下如何知道内存去了哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4084158/

相关文章:

python - 对 python 导入感到困惑

assembly - 简单的 NASM "boot program"没有正确访问内存?

c++ - 指针数组的动态分配及其替代方案

linux - 如何使静态链接的 ELF 文件加载 LD_PRELOAD .so

arrays - 将本地动态数组的长度设置为零会减少内存使用量吗?

python - Python中的内存错误解决方案

iphone - 将内存分配给属性的潜在泄漏

python - CentOS 6.6 默认使用 Python 2.6,运行 Swift 命令时会抛出语法错误

PHP-FPM 和 Nginx : "Resource temporarily unavailable" errors in proxy_error_log

c++ - Qt widget 应用程序输出到控制台