㈠ 如何獲取 java hashmap佔用內存空間大小
反射一下 table[] 這個數組的長度 ,遍歷裡面所有的Entry鏈表。
hashmap基本上就是這個數組和裡面的Entry裡面的佔用空間多,(不包括裡面key 和 value 的大小)
另外還有幾個域 , 佔用內存是固定的,可以忽略。
㈡ java map可以放多少數據
map由key value鍵值對組成,具體放多少數據和你的伺服器運行時的內存有關系,同時也和你代碼中及時清理無效緩存有關系。
一般編寫代碼中不會去考慮放多少數據問題,除非你數據量超級大對內存要求比較高。這個時候需要對代碼和伺服器進行優化
㈢ 如何獲取 java hashmap佔用內存空間大小
java沒有sizeofo,,
我參考 http://topic.csdn.net/t/20060224/20/4575988.html寫了一個
public static void main(String[] args){
// 創建1000個HashMap
HashMap strA[] = new HashMap[1000];
long start = 0;
long end = 0;
// 先垃圾回收
System.gc();
start = Runtime.getRuntime().freeMemory();
for(int i = 0; i < 1000; ++i)
strA[i] = new HashMap();
// 快要計算的時,再清理一次
System.gc();
end = Runtime.getRuntime().freeMemory();
System.out.println("一個HashMap對象占內存:" + (start - end)/1000.0);
}
㈣ java中開一個8千萬大小的map來載入1G左右的文件,大概42000000行,導致內存急劇減小11個G,是什麼情況
具體map的結構以及文件的格式?同樣的文件有不同的數據機構組織方式,佔用內存就是不一樣的,而且map要維護hash key,也要額外佔用空間