¿Alguien puede explicarme por qué las JVM (no verifiqué demasiadas, pero nunca he visto una que no lo haya hecho de esa manera) necesitan ejecutarse en un tamaño de almacenamiento dinámico fijo? Sé que es más fácil de implementar en un montón contiguo simple, pero Sun JVM ahora tiene más de una década, por lo que esperaría que hayan tenido tiempo para mejorar esto.
La necesidad de definir el tamaño máximo de memoria de su programa en el momento del inicio parece una cosa de los años 60, y luego están las malas interacciones con la gestión de memoria virtual del sistema operativo (GC recuperando datos intercambiados, incapacidad para determinar cuánta memoria es el proceso de Java Realmente usando desde el lado del sistema operativo, se desperdician grandes cantidades de espacio de VM (lo sé, no te importan tus elegantes máquinas de 48 bits ...)). También supongo que los diversos intentos tristes de construir pequeños sistemas operativos dentro de la JVM (servidores de aplicaciones EE, OSGi) son al menos parcialmente responsables de esta circunstancia, porque ejecutar múltiples procesos Java en un sistema invariablemente conduce a recursos desperdiciados porque tiene que dar a cada uno de ellos la memoria que podría tener que usar en el pico.
Sorprendentemente, Google no generó las tormentas de indignación sobre esto que yo esperaría, pero pueden haber sido enterrados bajo los millones de personas que se enteraron del tamaño fijo del montón y simplemente lo aceptaron de hecho.