統計を生成するには、54,000を超える多くのSQLiteデータベースを読み取る必要があります。
Sequel3.44.0とSqlite1.3.7を使用して、Ruby1.8.7パッチレベル371で実行されるRubyアプリケーションを作成しました。
私はデータベースを読み取るためにこのコードを書きました:
for i in databases
db= Sequel.sqlite(i)
# DB'query and other operation
db.disconnect
end
しばらくすると、プログラムはエラーなしでクラッシュします。アプリケーションの実行中のメモリ消費量を調べたところ、RAMのサイズまで増加しています。
ガベージコレクションの問題ですか?それとも間違いがありますか?Rubyでたくさんのデータベースを読み取る方法はありますか?
編集:
私は4GBのRAMを持っています。私は試してみました:
databases.each { |i| }
しかし、何も機能しませんでした。プログラムが2GBのメモリ使用量に達すると、プログラムは停止しました。