¿Hay algún inconveniente real para permitir una pila MUY grande en la JVM, como gigabytes?
En particular, con muchos hilos, ¿esto va a dar problemas? si el espacio de la pila no se usa realmente, ¿habrá más memoria desperdiciada en la práctica en las JVM más usadas que se ejecutan en win/linux/mac?
Por ejemplo, si asigno 1 GB para la pila y ejecuto 100 subprocesos, pero en realidad no llenan el espacio de la pila con datos reales, ¿la ejecución del programa requeriría 100 GB de memoria física real?
Esta pregunta está fuertemente relacionada con esta antigua ( pila de JVM dinámicamente expandible ) que se hizo hace 10 años cuando el entorno de Java era bastante diferente.
Ahora, casi todos los programas de Java se ejecutan en una arquitectura de 64 bits, y JVM ha mejorado mucho en general.
Expansión: a menudo ejecuto programas recursivos muy complejos en estructuras de datos grandes/profundas, y tener que usar mónadas libres u otras transformaciones de programas para usar el montón en lugar de la pila es complejo, lento y posiblemente sin sentido. Una alternativa sería usar fibras de telares de Java, pero... de nuevo, puede ser que solo asignar una pila duplicada sea más fácil y rápido. Veo por qué esto no se hace en C/C++, pero bajo una máquina virtual esto debería ser razonable. ¿Lo es?