【发布时间】:2016-05-29 07:06:36
【问题描述】:
我想知道 bash 脚本是否存在内存泄漏问题?
系统是否会在执行后自动释放内存,或者是否有任何我们必须在 shell 脚本中使用的显式命令(如 C++ 中的 free 命令)?如果是,什么样的命令会导致内存泄漏问题。
如何查看shell脚本的内存使用情况(如栈空间、堆空间、文本空间)?
感谢任何信息,因为我不太了解 bash 脚本中的内存管理。
【问题讨论】:
-
你的发行版中的 bash 应该是一个稳定的无错误版本。如果你怀疑有泄漏,为什么不获取 bash 源代码[ code ] 并编译一个调试版本。
-
还要检查[ debugging ] bash 脚本。
-
根据我的经验。是的!如果您在脚本中使用
<proc> &启动一个进程。存在进程未终止并将挂起的风险。然后你必须找到它们并杀死 pids。您可以像这样跟踪已启动的进程:my_child_PID=$!以防止进程挂起。 -
bash脚本的主要目的是运行 other 程序(它们本身可能存在内存泄漏,但这是另一个问题)。bash脚本使用的唯一内存是其参数,但如果您的脚本管理的数据太多以至于其内存使用成为问题,那么您使用的语言有误。 -
在真正遇到问题之前,不要浪费时间寻找内存泄漏。单独的内存泄漏不是问题;只有首先分配大量内存但随后不释放该内存的程序才是。同样,任何一开始就可能使用这么多内存的脚本都不应该写在
bash中,无论是否可能泄漏。
标签: bash shell unix memory-leaks scripting