On Jul 23, 2018, at 5:26 PM, Martin Buchholz <[email protected]> wrote:
> I'm the author of most of the MAX_ARRAY_SIZE code in the jdk.
> We should be as consistent as we can given the history.
Thanks for the history lesson.
> It all looks pretty similar.
There are in fact a number of them in java.base:
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/io/ByteArrayOutputStream.java
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/lang/AbstractStringBuilder.java
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/AbstractCollection.java
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/ArrayDeque.java
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/ArrayList.java
static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/Hashtable.java
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/PriorityQueue.java
static final long MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/stream/Nodes.java
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
src/java.base/share/classes/java/util/Vector.java
> So unsurprisingly I prefer the status quo.
I am wondering whether MAX_ARRAY_SIZE is even still necessary in current VMs? I
don’t know the low level details enough to comment on that.
Thanks,
Brian