我记得,在我使用 Windows Vista/7 的时候,有一个名为 memclear 或 memclean 的工具,可以通过调用 NT 垃圾收集 API 来释放一些内存。可能它也清除了缓存。很多时候,当我使用 Ubuntu 时,一段时间后系统分配的内存停留在几 GB,当我执行图像编辑等内存密集型任务时,我必须等待相当长的一段时间才能交换额外的 GB。
有没有办法强制内核 GC 之类的东西释放真正未使用的内存? (当我启动时,内存消耗不到1G)
答案1
从您发布的内容来看,您似乎不了解 Linux 中的内存是如何工作的。
我推荐阅读
- http://www.linuxnix.com/find-ram-size-in-linuxunix/
- http://www.itworld.com/article/2722141/it-management/making-sense-of-memory-usage-on-linux.html
- http://www.linuxatemyram.com/
这些网站的要点是你拥有比你想象的更多的“免费”内存。
答案2
如果是虚拟机的话可以这样做
echo 1 > /proc/sys/vm/drop_caches
例如,在内存膨胀的 vmware 中(即安装了 vmware-tools 或 open-vmware-tools),您可以将缓存中使用的当前内存返回给虚拟化管理程序。
正如其他人所说,这仅在非常特定的条件下有用。