【发布时间】:2016-11-26 07:25:36
【问题描述】:
我注意到有时我的 ruby 脚本在处理小数据时运行得相当好,因为当你给它们一个大数据集来处理时,没有更多的内存了。例如,我有一个很长的脚本,每分钟它都会增加 100 兆字节左右的内存使用量,直到我给它足够大的数据来处理它时它就会崩溃。
那么,问题是,如何避免 ruby 中的内存泄漏,该做什么和不该做什么?有任何提示和技巧可以优化长时间运行脚本的 ruby 内存使用吗?
如何确保我的 ruby 脚本没有泄漏任何内存?
谢谢!
【问题讨论】:
-
如果不知道正在运行的脚本以及该脚本的输入,很难回答这个问题。
-
快速破解:不时戳戳
GC.start,然后清理您创建的任何垃圾。 Ruby 不会泄漏内存,但您可以创建难以清理的结构,或者您可能会保留对不需要的东西的引用。由于您发布了零代码,我无法真正告诉您您正在处理哪种情况。 -
值得注意的是,新版本的 Ruby(例如 2.3+)在处理内存清理方面明显优于旧版本,所以如果您没有运行 2.3,请在浪费时间之前尝试升级一个非问题。
-
@tadman - 谢谢,GC.start 帮助了。当您说“您可以创建难以清理的结构,或者您可能保留对您不需要的东西的引用”时,您能举一个简单的例子吗?