我有一个bash脚本,它循环遍历包含数百个子目录和数千个文件的目录的find
的结果,并在每个文件上运行许多命令,主要是sed
和grep
。
我知道这显然是计算密集型的。我遇到的问题是,它使用了吨的内存,当脚本完成时,这些内存不会被释放。这个脚本在cygwin内部运行。关闭cygwin不会释放任何内存,我需要重新启动Windows才能将其恢复。
有没有一个命令我可以运行(在Windows或cygwin中)来释放脚本使用的内存?
现代操作系统倾向于将RAM用于两个主要目的:
- 流程
- 文件系统缓存
在GNU/Linux中,大多数时候,您会看到使用了大量ram,但其中大部分实际上只是文件系统缓存,当真正的应用程序需要内存时,它会被丢弃,而不会出现任何问题。
示例:我的笔记本电脑有7868MB的RAM。总共使用了6284兆欧,但实际程序只使用了2441兆欧。
因此,为了回答您的问题:
-
我不知道(我看不到你的代码)是否有进程正在生成并保持活力,请对此进行调查,如果你确定没有,请继续。
-
在Windows(您的操作系统)中查找用于丢弃文件系统缓存的命令警告:占用文件系统缓存可能会使您的计算机在一两分钟内变慢,因为操作系统将不得不从硬盘上重新读取一些组件和一些可执行文件。(有没有办法告诉Windows不要缓存来自某个用户/进程等的文件系统系统调用?)
请不要说,尽管我正在努力提供帮助,但我可能完全没有抓住要点(我无法查看您的代码,我只是根据您描述的"症状"猜测)。
希望能有所帮助
Snoopy