Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么Rails 4保持内存使用率?_Ruby On Rails_Ruby_Memory_Memory Management - Fatal编程技术网

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

Ruby on rails 为什么Rails 4保持内存使用率?,ruby-on-rails,ruby,memory,memory-management,Ruby On Rails,Ruby,Memory,Memory Management,我有一个获取150000条以上记录的代码: 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,

我有一个获取150000条以上记录的代码:

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
这个使用量大约为750MB,最后我用零来提高

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


Rails在执行ctrl+C之前保持750MB的内存使用量。

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

我在不使用ORM now的情况下节省了50%以上的内存,代码使用250 MB!!但Rails仍能保持250 MB的内存使用率。。当进程完成时,它应该是免费的。。我用纯Ruby代码进行了测试。。它工作良好,并在处理完成后释放内存。