ruby中本地变量和实例变量之间的差异

ffl*_*r05 2 ruby

我正在开发一个脚本,它创建几个相当复杂的嵌套哈希数据结构,然后有条件地创建数据库记录.这是一个使用活动记录的独立脚本.经过几分钟的运行后,我发现服务器响应速度明显滞后,并发现该脚本虽然设置为nice +19正在享受稳定的%85 - %90总服务器内存.

在这种情况下,我只是为了可读性而使用实例变量.它有助于了解在循环之外将重复使用的内容与不会重复使用的内容.是否有理由在不需要时不使用实例变量?本地变量和实例变量之间的内存分配和管理是否存在差异?它@variable = nil不再需要时有助于设置吗?

Chu*_*uck 5

实例变量在持有它的对象的生命周期中继续存在.局部变量仅存在于单个方法,块或模块体中.

如果您假设对象的实例中的对象将被垃圾收集,因为您将来不打算引用它们,那不是它的工作原理.垃圾收集器只知道是否存在对该对象的可访问引用 - 并且它是否存在于实例变量中.