Ruby on rails 3 Getting OutOfMemoryError:使用ActiveRecord::find_in_batces时GC开销限制异常(一次20条记录)

Ruby on rails 3 Getting OutOfMemoryError:使用ActiveRecord::find_in_batces时GC开销限制异常(一次20条记录),ruby-on-rails-3,activerecord,jrubyonrails,Ruby On Rails 3,Activerecord,Jrubyonrails,我正在使用: Rails 3.0.7 jruby 1.6.7(ruby-1.8.7-p357) 并尝试以20个批次处理~360K DB记录,如下所示: BackJobs.find_in_batches(:conditions => "progress = -1", :batch_size => 20) do |all_pending_jobs| all_pending_jobs.each do |job| pending_jobs.push(job)

我正在使用: Rails 3.0.7 jruby 1.6.7(ruby-1.8.7-p357)

并尝试以20个批次处理~360K DB记录,如下所示:

BackJobs.find_in_batches(:conditions => "progress = -1", :batch_size => 20) do |all_pending_jobs|
    all_pending_jobs.each do |job|
        pending_jobs.push(job)
    end
但是,请在一段时间后继续获取异常:

ActiveRecord::StatementInvalid: Java::JavaLang::OutOfMemoryError: GC overhead limit 
exceeded: SELECT  "background_jobs".* FROM "background_jobs" WHERE (progress = -1) 
AND ("background_jobs"."id" > 45256) ORDER BY "background_jobs"."id" ASC LIMIT 20
该过程使用以下JVM设置运行: -Xmx256m-Xss2048k

据我所知,直到rails 3.1.0才支持active_record.identity_映射

但是,即使只使用ActiveRecord::unched也没有帮助

不确定是否应该/如何销毁ActiveRecord对象以释放内存。请告知。谢谢