On Jul 23, 2018, at 5:26 PM, Martin Buchholz <marti...@google.com> 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