为什么Rails 4保持内存使用率?

时间:2014-04-07 18:25:07

标签: ruby-on-rails ruby memory memory-management

我有一个代码可以获得1 000,000条记录:

meter_data = MeterData.find_by_sql("SELECT tenant, meter_id, SUM(van) as van, SUM(vbn) as vbn,
                                       SUM(vcn) as vcn, SUM(ia) as ia, SUM(ib) as ib, SUM(ic) as ic,
                                       SUM(w3pht) as w3pht, SUM(pf3pht) as pf3pht, SUM(f) as f,
                                       SUM(whrec) as whrec, SUM(whtot) as whtot, SUM(varhrec) as varhrec,
                                       SUM(varhtot) as varhtot, SUM(whintvlrec) as whintvlrec,
                                       SUM(whintvldel) as whintvldel, SUM(w__phavg) as w__phavg,
                                       SUM(var__3phavg) as var__3phavg, SUM(w_3phavg) as w_3phavg,
                                       SUM(var_3phavg) as var_3phavg, SUM(phai) as phai, SUM(phbi) as phbi,
                                       SUM(phci) as phci, SUM(w__3phmaxavgdmd) as w__3phmaxavgdmd,
                                       MAX(w__3phmaxavgdmd) as w__3phmaxavgdmd_max, SUM(var__3phmaxavgdmd) as var__3phmaxavgdmd,
                                       SUM(w_3phmaxavgdmd) as w_3phmaxavgdmd, SUM(var_3phmaxavgdmd) as var_3phmaxavgdmd,
                                       date_time FROM `meter_data` WHERE (`date_time_i` >= #{@from_date} AND `date_time_i` <= #{@to_date}
                                       AND building = '#{@building_info}') GROUP by tenant, meter_id, date_time
                                       ORDER BY `meter_data`.`date_time_i` ASC")



raise 0

这个用法大约750 MB,最后我只是加零。

问题是为什么rails不释放内存?

Rails保持内存使用量为750 MB,直到我执行ctrl + C.

1 个答案:

答案 0 :(得分:0)

Rails是Ruby和Ruby(MRI)是带有垃圾收集器(GC)的解释器。 GC将自动为您管理内存。有一些命令可以显式调用GC,但如果您需要这种级别的内存管理,您可能还会探索其他一些支持此行为的语言。