javaset占用内存大小

Python012

javaset占用内存大小,第1张

javaset将占用16个字节的空间。 因此,最初我将条目数乘以16以获取内存。 但实际上,每个条目的内存远远超过16个字节。 之后,我研究了HashSet的实现。 简而言之,在基础实现中,它实际上在哈希集的每个条目中存储了一个额外的伪对象(12个字节)。 还有一个指向下一个条目的指针(8个字节)。 因此,每个条目将额外浪费12 + 8个字节。

因此,每个条目的总内存为:16 + 12 + 8 = 36字节。 但是当我运行代码并检查内存时,每个条目仍然超过36个字节。

Object o=new Object():

在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.

举个例子:

Class O{

int i

byte j

String s

}

其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为24byte.

当然,如果类里有其他对象的话,也要把其他对象的空间算进去