我需要讀取54,000多個數據庫中的許多SQLite數據庫才能生成統計信息。Ruby續集內存泄漏?
我創建了一個使用Sequel 3.44.0和Sqlite 1.3.7在Ruby 1.8.7 patchlevel 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的內存使用它停止。
可能是一個範圍界定問題。試試'databases.each {| i | ''。無論如何,沒有人使用'for'循環。 – Reactormonk 2013-02-10 14:43:46
'for in in'不是數組迭代的Ruby特定方法。您應該嘗試使用「每個」或其他塊方法。 – 2013-02-10 15:02:46
你在圈內做什麼?您是否將所有數據庫的數據收集到中央數據存儲器?你寫道:「沒有錯誤崩潰」。屏幕上最後的信息是什麼?或者你雙擊啓動你的腳本,屏幕消失 - 然後從一個shell啓動你的應用程序來查看最後一條消息。 – knut 2013-02-10 16:13:33