我有一个内存中的集合,当它达到一定的大小(计数)或内存占用时,我想要刷新到磁盘。
如何确定集合使用的内存量?
它将是某种字典/地图。
答案 0 :(得分:6)
你不能轻易。例如,考虑一个ArrayList<String>
,其后备数组大小为256,而#34;正在使用&#34;大小为200,其中每个字符串长度为20个字符,由30个字符的后备阵列支持。
听起来就像你可以很容易地计算掉了多少内存 - 但是如果数组中的每个元素实际上都是对相同字符串的引用,显然它需要更少的内存。那只是String
,这是一个相对直接分析的类。对于具有明确区分和可能共享参考的各种混合的类,它变得更加复杂。
你可以序列化它 - 但这只能显示序列化时占用的空间,而不是内存。
我建议你试验并找到一些合适的&#34;平均值&#34;大小,得出一个有意义的最大计数,然后继续这样做。