我注意到,当我们点击ActiveRecord的#execute()获取大型结果集(> 1M行数据)时,我们的工作箱会占用内存利用率,但是当我使用PG连接到PG时,内存保持相对平坦原始连接并使用#send_query方法。此外,即使在#execute运行完毕之后,内存也保持在相同的高级别,这使得看起来任何创建的临时对象都在附近,并且没有收集垃圾。
在任何一种情况下,我都没有将#execute或#send_query方法的结果设置为任何变量;它只是被调用来执行传入的SQL。
我使用ObjectSpace进行了一些挖掘,但无法确定内存膨胀的位置。任何帮助将不胜感激!