使用Java我想創建一個可以增長和增長的Map,並且可能大於可用內存的大小。現在顯然使用標準的POJO HashMap,我們將耗盡內存,並且JVM會崩潰。所以我正在考慮一個Map,如果它意識到內存不足,它可以將當前內容寫入磁盤。在Java中創建一個非常非常大的地圖
有沒有人執行過這樣的事情,或者知道現有的解決方案?
我想要做的是讀一個非常大的ASCII文件(比如說50Gb)一次一行。每行包含一個鍵和一個值。密鑰可以在文件中複製。然後,我會將每行存儲在一個Map中,這是一個值列表的鍵。這張地圖是一個只會發展壯大的對象。
任何建議非常感謝。
菲爾
更新:
感謝所有的意見和建議每一個人。由於我描述的問題,數據庫是正確的,可擴展的解決方案。我應該說,這是一個臨時地圖,需要在短時間內創建和使用,以幫助解析文件。在這種情況下,Michael的建議是「只存儲行號而不是實際值」是最合適的。將邁克爾的答案標記爲推薦的解決方案。
使用內存數據庫(如HSQL)會不會更簡單? – mcfinnigan
你映射了哪些鍵/值類型? –
我並不熱衷於數據庫方法。它太重了。 – Phil