Vin*_*nto 9 java memory-management hashtable
在Java中,如果我在其中创建Hashtable<K, V>并放置N个元素,它将占用多少内存?如果它依赖于实现,那么什么是一个好的"猜测"?
Bob*_*Gee 14
编辑; 哦,天哪,我是个白痴,我给了HashMap的信息,而不是HashTable.但是,在检查之后,实现对于内存目的是相同的.
这取决于VM的内部存储器设置(项目的打包,32位或64位指针以及字对齐/大小),并且不由java指定.
有关估算内存使用的基本信息,请点击此处.
您可以这样估算:
所以,将它放在一起(对于32/64位的Sun HotSpot JVM):HashMap需要24个字节(本身,原始字段)+ 12个字节(插槽数组常量)+每个插槽4个或8个字节+每个条目24/40个字节+密钥对象大小+值对象大小+将每个对象填充为8个字节的倍数
或者,大致(最多默认设置,不保证精确):
注意:这需要更多检查,64位VM上的对象开销可能需要12个字节.我不确定nulls - null的指针可能会以某种方式被压缩.