Один экземпляр может пытаться получить доступ ко всей памяти, однако области NUMA означают, что такие вещи, как GC, плохо обращаются к памяти в другой области. Это становится быстрее, и JVM имеет некоторую поддержку NUMA, но ее нужно улучшить, если вы хотите масштабируемости. Даже в этом случае вы можете получить 256 МБ кучи и использовать 700 встроенной / прямой памяти без этой проблемы. ;)
Самое большое ограничение, если у вас много памяти, это то, что массивы, коллекции и ByteBuffer (для файлов с отображением в памяти) ограничены размером в 2 миллиарда. (2 ^ 31-1)
Вы можете обойти эти проблемы с помощью пользовательских коллекций, но это действительно то, что Java должна поддерживать IMHO.
Кстати: вы можете купить Dell R910 с 1 ТБ памяти и 24 ядрами / 48 потоков с Ubuntu за £ 40K.
Кстати: у меня есть опыт работы только с JVM размером до 40 ГБ.