释放bash脚本使用的内存

时间:2014-01-05 15:45:51

标签: linux bash memory process

我有一个bash脚本循环遍历find的结果,包含数百个子目录和数千个文件的目录,并在每个文件上运行许多命令,主要是sed和{{1 }}

我明白这显然是计算密集型的。我遇到的问题是它使用了一个 ton 的内存,当脚本完成时它没有被释放。这个脚本在cygwin中运行。关闭cygwin不会释放任何内存,我需要重新启动Windows才能恢复它。

是否有可以运行的命令(在Windows或cygwin中)来释放脚本使用的内存?

1 个答案:

答案 0 :(得分:3)

现代操作系统倾向于将RAM用于两个主要目的:

  • 过程
  • 文件系统缓存

在GNU / Linux中,大多数情况下,你会看到很多ram被使用,但大部分都是文件系统缓存,当实际应用程序需要内存时,它会被丢弃而没有任何问题。

示例:我的笔记本电脑有7868MB的RAM。总共使用了6284个megs,但实际程序只使用了2441个。

所以,回答你的问题:

  1. 我不知道(我看不到你的代码),如果有进程产生并保持活着,请对此进行调查,如果你确定没有,请继续。

  2. 在Windows(您的操作系统)中查找哪个命令用于丢弃文件系统缓存。 警告:强制文件系统缓存可能会使您的计算机暂停一两下,因为操作系统必须从硬盘重新读取其中的一些组件和一些可执行文件。 (有没有办法告诉Windows不要缓存来自某个用户/进程/等的文件系统系统调用?)

  3. 请注意,尽管我正在努力提供帮助,但我可能完全忽视了这一点(我无法看到你的代码,我只是猜测你所描述的“症状”。)

    希望它有所帮助,

    史努比