我有一個巨大的數據集(7億行,大約30Gb),我需要加載所有到內存中。哪個更快,需要更少的內存? - 具有對象或其屬性的HashMap?
對於每一行,可以考慮像一個對象:
Class XX{
private int id;
private int a;
private int b;
private int c;
/**
Some getters and setters;
*/
}
每一行都有一個唯一的ID ,以及其他三個屬性是獨立的,但他們需要配合他們的ID。
我發現兩種方法將它們存儲在內存:
HashMap中的值是一個
Object XX
:HashMap<id, Object XX>
使用三種不同的包含HashMap,HashMap中的值是每屬性:
HashMap<id, a>
HashMap<id, b>
HashMap<id, c>
我的問題是,該方法需要較少的內存? (在我的情況下,空間複雜性比時間複雜性更重要)
當你嘗試時發生了什麼? –
嘗試兩種方法並仔細測量它們。如果你採取系統的方法,我相信你可以自己回答這個問題。像[YourKit](https://www.yourkit.com)這樣的工具可以幫助您以非常精細的細節探索您的內存空間。 – tadman
我試了他們兩個,結果是第二種方法需要更少的內存,但我不知道爲什麼。 –