hashmap value占用空间大小_java-测量和监视大型HashMap的大小
首先,有一篇來自Alexey Shipilev(Oracle的前JVM工程師,現在在Redhat的)的this篇很棒的文章,解釋說這并不是那么容易.
Java中的每個對象都有兩個標頭,它們的大小可以取決于平臺或jvm的啟動配置(UseCompressedOops).
然后,在字段和對象自身之間進行填充和對齊(8字節對齊).然后,有一個JVM根本不會顯示的空間,因為它不能顯示或確實需要顯示.
所有這些事情使得計算某個對象在堆中的大小變得有些微不足道.幸運的是存在JOL.它甚至也有很多樣本…這是一個小例子,假設您有這樣一個類:
static class MyValue {
private final int left;
private final String right;
public MyValue(int left, String right) {
this.left = left;
this.right = right;
}
}
然后創建一個HashMap:
Map map = new HashMap<>();
System.out.println("empty map = " + GraphLayout.parseInstance(map).totalSize());
MyValue one = new MyValue(1, "one");
System.out.println("one = " + GraphLayout.parseInstance(one).totalSize());
map.put("one", one);
System.out.println("map after one = " + GraphLayout.parseInstance(map).totalSize());
MyValue two = new MyValue(1, "two");
map.put("two", two);
System.out.println("map after two = " +
GraphLayout.parseInstance(map).totalSize());
總結
以上是生活随笔為你收集整理的hashmap value占用空间大小_java-测量和监视大型HashMap的大小的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: matlab cell转数组_MATLA
 - 下一篇: matlab save txt 乱码,m