如何通过Collections.singletonList()高效减少单元素集合的内存使用?
- 内容介绍
- 相关推荐
本文共计820个文字,预计阅读时间需要4分钟。
`Collections.singletonList()` 是 Java 中专门用于创建不可变单元素集合的高效工具。它通过复用静态实例和避免额外的对象分配,显著降低内存消耗。相比直接使用 `new ArrayList(Collections.singleton(...))`,这种方式更加高效。
为什么 singletonList 内存开销极小
它内部使用一个共享的、预创建的不可变 List 实现类(JDK 中为 Collections$SingletonList),仅持有一个引用字段(element);整个对象仅占用对象头 + 一个引用字段(通常 16 字节左右,不含元素本身)。没有容量字段、size 字段(size 固定为 1)、无底层数组拷贝——这比 ArrayList(至少 3 个字段:elementData、size、modCount)或 Arrays.asList()(包装原始数组,且数组本身需分配)节省明显。
本文共计820个文字,预计阅读时间需要4分钟。
`Collections.singletonList()` 是 Java 中专门用于创建不可变单元素集合的高效工具。它通过复用静态实例和避免额外的对象分配,显著降低内存消耗。相比直接使用 `new ArrayList(Collections.singleton(...))`,这种方式更加高效。
为什么 singletonList 内存开销极小
它内部使用一个共享的、预创建的不可变 List 实现类(JDK 中为 Collections$SingletonList),仅持有一个引用字段(element);整个对象仅占用对象头 + 一个引用字段(通常 16 字节左右,不含元素本身)。没有容量字段、size 字段(size 固定为 1)、无底层数组拷贝——这比 ArrayList(至少 3 个字段:elementData、size、modCount)或 Arrays.asList()(包装原始数组,且数组本身需分配)节省明显。

