2016-11-20 35 views
-1

我在java中使用HashMap,我已經注意到它消耗了太多內存,但我有必要搜索元素以儘快實現。Java HashMap內存,以減少它

如果我知道之前有多少元素將放入裏面,是否有一些爲了減少hashMap的內存?

因爲我知道要存儲多少信息,但我不知道。

因爲我的問題是讀取一個文件,並在這個文件中有一些信息潛入兩個集合,我必須在同一個結構中連接這些信息。

我知道HashMap爲了能夠正常工作而浪費了超過25%的內存。

謝謝你的幫助。

+1

你如何注意的是,它消耗了太多的內存? – chrylis

+0

因爲當我啓動程序時,我已經放了一些'System.out.println',它給了我一些這樣的信息:'Long usedMemory = Runtime.getRuntime()。totalMemory() - Runtime.getRuntime()。freeMemory(); ' – snorlax

+3

這個輸出實質上是沒有意義的。除非您正確地描述了您的應用程序,否則沒有理由認爲(1)存在問題或(2)它與您的地圖有絲毫關係。 – chrylis

回答

0

使用:

new HashMap<>(capacity); 
+0

這不會讓它使用* less *內存,您只需將它預先分配給(大概)更大的容量,這樣它就不必在那裏自動增長。 – Andreas

+1

@Andreas:OP知道將被存儲的元素的確切數量,所以沒有理由分配更多。 – Karol