導航:首頁 > 編程語言 > javamap大小

javamap大小

發布時間:2022-12-21 06:40:02

㈠ 如何獲取 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 怎麼限制Map的大小啊

為什麼有這樣的需求?好像系統自帶的Map並沒有這總操作,你需要大概只能自己重寫一個Map

㈢ 如何獲取 java hashmap佔用內存空間大小

反射一下 table[] 這個數組的長度 ,遍歷裡面所有的Entry鏈表。
hashmap基本上就是這個數組和裡面的Entry裡面的佔用空間多,(不包括裡面key 和 value 的大小)
另外還有幾個域 , 佔用內存是固定的,可以忽略。

㈣ java中開一個8千萬大小的map來載入1G左右的文件,大概42000000行,導致內存急劇減小11個G,是什麼情況

具體map的結構以及文件的格式?同樣的文件有不同的數據機構組織方式,佔用內存就是不一樣的,而且map要維護hash key,也要額外佔用空間

㈤ java中的怎麼確定map集合的數據量是多少kb

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class Test {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "aaa");
map.put(2, "bbb");
final int findKey = 2;
final String findValue = "bbb";
boolean find = false;
for (Entry<Integer, String> entry : map.entrySet()) {
int key = entry.getKey();
String value = entry.getValue();
if (key == findKey && value.equals(findValue)) {
find = true;
break;
} else {
continue;
}
}
if (find) {
System.out.println("找到了");
} else {
System.out.println("沒找到");
}
}
}

㈥ java map 的長度

Map是一個借口,只有實現他的類才有制定長度的功能,比如HashMap,初始化是16,List也是介面,它的實現類之一arraylist的構造函數有初始化長度的功能

㈦ java中如何使用map存取數據

java中使用map存取數據的方法如下:

1、需要指定其中的K,V;k=keyv=value。

㈧ Java JSP如何取得HashMap的大小

Java裡面沒有提供像C,C++那樣的Sizeof()方法,所以不可以直接取得內存資源大小.

但是有提供Runtime.getRuntime ().totalMemory ()和Runtime.getRuntime ().freeMemory ()這樣的方法

所以內存使用大小 = totalMemory () - freeMemory();

但是又不能直接傳送Hashmap對象去計算.必須在創建Haspmap之前gc一次,然後得到大小,創建HaspMap之後再gc一次,得到內存大小,然後相減.

===================================
是的,這種方法統計的內存大小是Java使用的內存.但是Java垃圾回收機制,所以不能精確到KB.那就是我們在計算得時候必須GC得原因.

還有一個辦法就是上面這么兄弟說得,用序列化.把HaspMap序列化(其實就是寫入到一個臨時文件).然後這個臨時文件得大小,就是內存佔用得大小.這個可以精確到KB,但是效率上,值得考究.

㈨ java中hashMap的默認大小為什麼是2的冪

在hashmap的源碼中。put方法會調用indexFor(int h, int length)方法,這個方法主要是根據key的hash值找到這個entry在table中的位置,源碼如下:
/**
* Returns index for hash code h.
*/
static int indexFor(int h, int length) {
// assert Integer.bitCount(length) == 1 : "length must be a non-zero power of 2";
return h & (length-1);
}
注意最後return的是h&(length-1)。
如果length不為2的冪,比如15。那麼length-1的2進制就會變成1110。在h為隨機數的情況下,和1110做&操作。尾數永遠為0。那麼0001、1001、1101等尾數為1的位置就永遠不可能被entry佔用。這樣會造成浪費,不隨機等問題。

㈩ Java里的HashMap的獲取大小中用keySet().size()和直接size()有什麼區別

集合.size拿到的是鍵值對個數;
keyset.size拿到是鍵個數;
這二者都能表達集合中元素的個數;
區別,遍歷的時候,所用的方法有所不同keyset.size更加靈活;

閱讀全文

與javamap大小相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:485
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163