Хто-небудь може мені пояснити, чому JVM (я не перевіряв занадто багато, але я ніколи не бачив жодного, який би не робив це так) потрібно працювати на фіксованому розмірі купи? Я знаю, що це легше реалізувати на простому суміжному купі, але зараз JVM Sun вже більше десяти років, тому я б очікував, що вони встигли це вдосконалити.
Необхідність визначення максимального розміру пам'яті вашої програми під час запуску здається такою справою 1960-х років, і тоді виникають погані взаємодії з керуванням віртуальною пам'яттю ОС (отримання GC замінених даних, неможливість визначити, скільки пам’яті є процес Java Насправді, використовуючи ОС, витрачається величезна кількість простору VM (я знаю, вам не байдуже на ваших фантазійних 48-бітних машинах ...)). Я також здогадуюсь, що різні сумні спроби побудувати невеликі операційні системи всередині JVM (сервери додатків EE, OSGi) принаймні частково винні в цій обставині, тому що запуск декількох процесів Java в системі незмінно призводить до марних ресурсів, оскільки вам доведеться дайте кожному з них пам'ять, яку він може використати на піку.
Дивно, але Google не спричинив бурі обурення з приводу цього, що я б очікував, але вони, можливо, просто були поховані під мільйонами людей, які дізналися про фіксований розмір купи і просто прийняли це за факт.