【发布时间】:2014-10-21 18:07:28
【问题描述】:
我有一个需要大量内存的应用程序。我让它在具有 32GB RAM 的系统上运行一夜。同时运行free -m -s 20 以查看内存状态如何变化。我的应用程序是我在重新启动 Ubuntu 后唯一手动启动的(当然终端除外)。让我们看看部分输出:
应用程序启动时间:
total used free shared buffers cached
Mem: 32100 1428 30671 35 69 594
-/+ buffers/cache: 765 31335
Swap: 32693 0 32693
申请结束前:
total used free shared buffers cached
Mem: 32100 31860 240 84 2 17420
-/+ buffers/cache: 14437 17663
Swap: 32693 12 32681
申请结束后:
total used free shared buffers cached
Mem: 32100 18723 13376 84 2 17434
-/+ buffers/cache: 1285 30814
Swap: 32693 12 32681
并且状态保持不变好几个小时,直到我早上回来。
我的问题是:
为什么我的大部分记忆仍然被认为是 free 的一部分 buffers/cache ?这部分内存何时会再次成为整体Mem: 的free 部分?
我然后打开了一个浏览器、一个 IDE 和一些其他 GUI 应用程序,以查看内存是如何以及从何处分配给新应用程序的:
total used free shared buffers cached
Mem: 32100 20378 11721 88 160 18075
-/+ buffers/cache: 2143 29956
Swap: 32693 12 32681
显然,Mem: 和 buffers/cache: 的可用内存已分配给新应用程序。你能帮我解释一下吗?
【问题讨论】:
标签: c++ ubuntu memory memory-management