我想知道bash脚本是否存在内存泄漏问题?
执行后,系统是否会自动释放内存,还是我们需要在shell脚本中使用类似于C++的free命令来显式释放内存?如果是,哪些命令会导致内存泄漏问题。
如何检查shell脚本的内存使用情况(例如堆空间、栈空间、文本空间)?
由于我对bash脚本中的内存管理不太了解,因此任何信息都将不胜感激。
我想知道bash脚本是否存在内存泄漏问题?
执行后,系统是否会自动释放内存,还是我们需要在shell脚本中使用类似于C++的free命令来显式释放内存?如果是,哪些命令会导致内存泄漏问题。
如何检查shell脚本的内存使用情况(例如堆空间、栈空间、文本空间)?
由于我对bash脚本中的内存管理不太了解,因此任何信息都将不胜感激。
我对内存泄漏的定义(来自维基百科):在计算机科学中,内存泄漏是一种资源泄漏类型,发生在计算机程序错误地管理内存分配,以至于不再需要的内存没有被释放。
因此,fork bomb 不符合内存泄漏的条件,因为内存仍然是需要的。
你不能直接使用 bash 自己管理内存,所以不,你不能在纯粹版本的无错误 bash 代码中创建内存泄漏。
如果不是这种情况(你有错误或使用外部代码),那么答案是肯定的,你可以使用类似 Valgrind 这样的工具。无论是在你的 bash 脚本上使用还是在调用外部代码时使用(从 bash 脚本内部调用)。
它支持许多平台,并且适用于任何语言。
bash
是用 c
写成的,因此你当然可以在 bash
中有内存泄漏。更准确地说,在一个完全没有 bug 的纯 bash
代码版本中是无法 创建
内存泄漏的。 - Reinstate Monica Please
<proc> &
启动一个进程,存在进程无法终止而挂起的风险。这时你需要找到它们并杀死进程ID。你可以像这样跟踪启动的进程:my_child_PID=$!
以防止进程挂起。 - Olabash
脚本的主要目的是运行其他程序(它们本身可能有内存泄漏问题,但这是另一个问题)。bash
脚本使用的唯一内存是用于其参数,但如果您的脚本管理的数据量太大,导致内存使用成为问题,那么您正在使用错误的语言。 - chepnerbash
编写,无论是否可能发生泄漏。 - chepner