在 Java 中,使用 List<Map<泛型类型, 泛型类型>> 存储 100 万个对象和使用 List<对象类型> 存储 100 万个对象,通常情况下 List<Map<泛型类型, 泛型类型>> 占用的空间更大。下面详细分析原因:

内存占用情况分析

1. List<对象类型> 存储方式

当使用 List<对象类型> 存储对象时,List 本身会维护一个内部数组来存储这些对象的引用。每个对象会在堆内存中占据一定的空间,而 List 只需要存储这些对象的引用。

import java.util.ArrayList;
import java.util.List;

class MyObject {
          
          
    private int id;
    private String name;

    public MyObject(int id, String name) {
          
          
        this.id = id;
        this.name = name;
    }
}

public class ListObjectExample {
          
          
    public static void main(String[] args) {
          
          
        List<MyObject> list = new ArrayList<>();
        for (int i = 0; i < 1000000; i++) {
          
          
            list.add(new MyObject(i, "Name" + i));
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

在这个例子中,List 只需要存储 100 万个 MyObject 对象的引用,而每个 MyObject 对象包含一个 int 类型的 id 和一个 String 类型的 name。</