You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TreeMap<Long, Long>存储1000个键值对的内存占用明细计算

TreeMap<Long, Long> 1000个唯一键值对内存占用计算

通用公式推导(基于你指定的拆分项规则)

首先对齐你给出的预设前提:

  1. 单个Long类型对象占用n字节
  2. 单个Entry<Long, Long>对象自身基础开销(不含键、值Long对象本身)占用2n字节,1000个条目合计2000n字节
  3. 单个对象引用占用k字节,单个节点含2个子节点引用,单节点子引用开销2k

补充第4类其他相关开销项:

  • 每个红黑树节点额外包含1个父节点引用,单节点父引用开销k
  • 每个红黑树节点包含1个boolean类型的颜色标记,单节点开销1字节,总开销需对齐到JVM对象对齐粒度(通常为8字节)
  • TreeMap本体对象的固定开销:包含对象头、size计数、modCount计数、根节点引用、比较器引用、集合视图缓存引用等,总开销记为C,通常在24~48字节区间,和JVM配置有关

最终总内存占用X的通用公式:

X = 键值Long对象总开销 + Entry基础开销 + 节点引用总开销 + 对齐后颜色标记开销 + TreeMap本体开销
X = 2000n + 2000n + 1000*(2k +k) + 对齐后颜色开销 + C
X = 4000n + 3000k + 对齐后颜色开销 + C

主流JVM实际场景数值结果

以HotSpot 64位JVM默认配置(开启指针压缩,对象对齐粒度8字节)为例:

  • n=24字节:对象头12字节 + long字段8字节 + 对齐填充4字节
  • k=4字节:压缩指针长度
  • 对齐后颜色标记开销:1000字节向上对齐到8的倍数,计1024字节
  • C=32字节:TreeMap本体对齐后开销

代入计算得总内存占用:
X = 4000*24 + 3000*4 + 1024 + 32 = 109056字节 ≈ 106KB

若关闭指针压缩:

  • k=8字节
  • C=48字节
  • 计算得总内存占用≈118KB

内容的提问来源于stack exchange,提问作者J.J. Beam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:06