Quando si esegue questo e si osserva il consumo di memoria del mio processo di ruby in OSX Activity Monitor, la memoria aumenta a circa 3 MB/s.Mancanza di memoria durante la creazione di molti nuovi oggetti
Se rimuovo la transazione, dimezza il consumo di memoria ma, comunque, il footprint di memoria continua a salire. Ho un problema nella mia app di produzione in cui Heroku uccide il processo a causa del suo consumo di memoria.
C'è un modo di fare il seguito, in un modo che non aumenterà la memoria? Se commento la riga .save
allora va bene, ma ovviamente questa non è una soluzione.
ActiveRecord::Base.transaction do
10000000.times do |time|
puts "---- #{time} ----"
a = Activity.new(:name => "#{time} Activity")
a.save!(:validate => false)
a = nil
end
end
Sto utilizzando questo utilizzando delayed_job
.
Finetune il tuo garbage collector ma è un lavoro complicato ... – apneadiving
@Morgz Quali versioni di Ruby e Rails stai utilizzando? – Matty
@Matty Rails 3.1.0 – Morgz