Java集合框架:性能优化与调优之内存占用分析(15)

ArrayList vs LinkedList内存对比:超市货架与火车车厢的存储哲学


文章目录

  • ArrayList vs LinkedList内存对比:超市货架与火车车厢的存储哲学
    • 货架与车厢内存对比图
    • 第一章 内存结构基础:仓库的存储单元
    • 第二章 ArrayList:超市货架的连续存储
    • 第三章 LinkedList:火车车厢的链接存储
    • 第四章 实战对比:存储百万数据的成本
      • 测试案例:存储100万个整数
    • 第五章 选择策略:货架管理员的经验
      • 场景1:商品实时监控系统(高频读取)
      • 场景2:银行排队叫号系统(频繁增删)
      • 黄金法则:


第一章 内存结构基础:仓库的存储单元

每个Java对象都像仓库中的储物箱,包含:

  1. 对象头(12字节):箱体编号和锁状态
  2. 实例数据:存放的实际物品
  3. 对齐填充:确保箱体整齐码放
// 普通对象内存占用示例
class Item {
   
    int id;         // 4字节
    String name;    // 引用4字节(实际字符串单独存储)
}

// 创建100个Item对象
List<Item> list = new ArrayList<>();
for(int i=0; i<100; i++) {
   
    list.add(new Item(i, "物品"+i)); 
}

总内存消耗 ≈ 100×(16字节对象头 + 8字节字段) + 字符串单独存储


第二章 ArrayList:超市货架的连续存储

ArrayList如同超市的联排货架,所有商品(元素)紧密排列在连续空间:

// 内部存储结构

你可能感兴趣的:(Java,java,开发语言)