2016-09-15 60 views
0

每當我發出一個查詢時,我的一些記憶就會被吃掉,並且永遠不會被恢復。如果我發出相同的查詢,則更多內存用完。爲什麼我每次查詢mnesia時,內存消耗都會增加?

例如,如果我發出這個查詢(以及後來的記錄轉換爲地圖):

CatchAll = [{'_', [], ['$_']}], 
mnesia:dirty_select(read_store, CatchAll) 

編輯:對不起形象是完全錯誤的 - 它顯示的進程都不會詢問

+0

什麼語言?你可以強制GC(只要使用一個)?否則,這可能是他們的漏洞。 – Carcigenicate

+0

Erlang。我不認爲我可以強迫它...... – drozzy

+0

對不起,我對Erlang一無所知。如果它使用GC,可能有某種方法可以強制它運行。值得一試。 – Carcigenicate

回答

0

的問題在於我在mnesia表中存儲字符串而不是二進制文件。

HTTP請求的結果是一個字符串:

httpc:request(get, {Url,[]}, [{timeout, ?TIMEOUT}], [])

然而,能夠將其改變爲二進制,而不是:

httpc:request(get, {Url,[]}, [{timeout, ?TIMEOUT}], [{body_format, binary}])

這通過減少內存佔用至少是20倍。

相關問題