你能确定一个集合的内存占用吗?

时间:2011-11-23 22:57:43

标签: java

我有一个内存中的集合,当它达到一定的大小(计数)或内存占用时,我想要刷新到磁盘。

如何确定集合使用的内存量?

它将是某种字典/地图。

1 个答案:

答案 0 :(得分:6)

你不能轻易。例如,考虑一个ArrayList<String>,其后备数组大小为256,而#34;正在使用&#34;大小为200,其中每个字符串长度为20个字符,由30个字符的后备阵列支持。

听起来就像你可以很容易地计算掉了多少内存 - 但是如果数组中的每个元素实际上都是对相同字符串的引用,显然它需要更少的内存。那只是String,这是一个相对直接分析的类。对于具有明确区分和可能共享参考的各种混合的类,它变得更加复杂。

你可以序列化它 - 但这只能显示序列化时占用的空间,而不是内存。

我建议你试验并找到一些合适的&#34;平均值&#34;大小,得出一个有意义的最大计数,然后继续这样做。