Java 32位系统BitSets的内存大小

Sop*_*ner 1 java memory bitset

如何计算new BitSet(n) C++中的内存.

Java中有什么内存new BitSet(1024).

但似乎Java的公式是不同的.我想计算用于的内存new BitSet(100000),请你帮忙吗?

Lor*_*tté 5

BitSet被打包成"单词"数组.一句话就是(在当前的实施中)很长.内部的单个位将被检索/设置使用掩蔽; 因此,它在一个单独的长值内部打包64位,并使用long数组来保存您需要的所有位.

数组的维数为N(100000)/ 64字节,或1563长,或12504字节,加上BitSet为其内部结构/ bookeeping所需的固定开销.

有关实现,请参阅http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/BitSet.java ; 计算字段并总结他们需要的空间(一个int:4个字节;一个长:8个字节,依此类推)你可以理解固定开销是多少.