我对数组的内存消耗做了一个实验。以下是 20000 个整数数组的结果:
操作系统:Windows 8 6.2,amd64
JVM:Oracle Corporation Java HotSpot(TM) 64 位服务器 VM 24.0-b56
x | 分钟 | 平均 | 最大 | 标准开发
总 CPU,毫秒 | 7.000000 | 8.250000 | 10.000000 | 0.829156
每个 LinkedList 的字节数 | 830.48 KB | 830.48 KB | 830.48 KB | 0.50 乙
每个项目的字节数 | 42.00 乙 | 42.00 乙 | 42.00 乙 | 0.00 乙
总 CPU,毫秒 | 4.000000 | 6.000000 | 7.000000 | 0.547723
每个 ArrayList 的字节数 | 416.00 KB | 416.00 KB | 416.00 KB | 0.00 乙
每个项目的字节数 | 21.00 早 21.00 早 21.00 早 0.00 乙
总 CPU,毫秒 | 0.000000 | 0.950000 | 1.000000 | 0.217945
每个 TIntArrayList 的字节| 105.56 KB | 105.56 KB | 105.56 KB | 0.00 乙
每个项目的字节数 | 5.00 乙 | 5.00 乙 | 5.00 乙 | 0.00 乙
所以是
链表:42 字节
数组列表:21 个字节
TIntArrayList:5 个字节
但是,如果数组列表的大小未知,则由于数组重新分配导致的内存消耗为:
链表:42 字节
数组列表:29 字节
TIntArrayList:10 个字节