Java: How much memory do different arrays consume
Overview
Arrays can be large and consume a significant amount of memory. It can me worth choosing the most memory efficient array/collection.Comparing array sizes
How much space does a `new int[1024]` take compared with an `new Integer[1024]`?int[] ints = new int[1024]; for (int i = 0; i < ints.length; i++) ints[i] = i;compared with
Integer[] ints = new Integer[1024]; for (int i = 0; i < ints.length; i++) ints[i] = i;Note: 1/8th of Integer values will come from the auto-box cache and not use additional memory. All possible Boolean and Byte values are cached.
array | size in bytes 32-bit JVM | size in bytes 64-bit JVM |
---|---|---|
new BitSet(1024) | 168 | 168 |
new boolean[1024] | 1040 | 1040 |
new Boolean[1024] | 4112 | 4112 |
new ArrayList<Boolean>(1024) | 4136 | 4136 |
new LinkedList<Boolean>() with 1024 | 24624 | 24624 |
new byte[1024] | 1040 | 1040 |
new Byte[1024] | 4112 | 4112 |
new ArrayList<Byte>(1024) | 4136 | 4136 |
new LinkedList<Byte>() with 1024 | 24624 | 24624 |
new char[1024] | 2064 | 2064 |
new Character[1024] | 18448 | 18448 |
new short[1024] | 2064 | 2064 |
new Short[1024] | 18448 | 18448 |
new ArrayList<Character/Short>(1024) | 18472 | 18472 |
new LinkedList<Character/Short>() with 1024 | 38960 | 38960 |
new int[1024] | 4112 | 4112 |
new Integer[1024] | 18448 | 18448 |
new float[1024] | 4112 | 4112 |
new Float[1024] | 20496 | 20496 |
new ArrayList<Integer/Float>(1024) | 18472 | 18472 |
new LinkedList<Integer/Float>() with 1024 | 38960 | 38960 |
new long[1024] | 8208 | 8208 |
new Long[1024] | 18448 | 25616 |
new double[1024] | 8208 | 8208 |
new Double[1024] | 20496 | 28688 |
new ArrayList<Long/Double>(1024) | 18472 | 25640 |
new LinkedList<Long/Double>() with 1024 | 38960 | 46128 |
new String[1024] | 52464 | 61456 |
new ArrayList<String>(1024) | 52488 | 61480 |
new LinkedList<String>() with 1024 | 72976 | 81968 |
Comments
Post a Comment