下面是一种将记录插入设备数据库的方法。我遇到了“分配内存失败”错误的问题。
它在内存非常有限的 Windows Mobile 设备上运行。
有 10 个模型,其中一个相当大,有 108,000 条记录。
执行此行时会发生错误(f.readlines().each do |line|),但它发生在已插入最大模型之后。
遍历行的块是否没有释放内存?还是有其他事情发生?
对此事的任何帮助将不胜感激!
def insertRecordsIntoRhom(models)
updateAmount = 45 / models.length
GC.enable
models.each_with_index do |model,i|
csvColumns = Array.new
db = ::Rho::RHO.get_src_db(model)
db.start_transaction
begin
j=0
f = File.new("#{model}.csv")
f.readlines().each do |line|
#extract columns from header line of csv
if j==0
csvColumns = getCsvFieldFromHeader(line)
j+=1
next
end
eval(models[i] + ".create(#{csvPutIntoHash(line,csvColumns)})")
end
f.close
db.commit
rescue
db.rollback
end
end
end