Java: Asignar memoria
Esta página documenta el criterio general para configurar la memoria Java en entornos de desarrollo con GeneXus 18 + Apache Tomcat 10.1, y las configuraciones específicas aplicadas en los equipos de la Dirección de Informática.
1. Criterio General para Asignar Memoria Java
En un equipo de desarrollo con GeneXus y Tomcat corriendo en simultáneo, la RAM se distribuye entre cuatro actores principales:
| Actor | Descripción | % orientativo de la RAM total |
|---|---|---|
| Sistema operativo (Windows) | Kernel, drivers, procesos de fondo | ~15–20 % |
| Apache Tomcat (Xmx) | Servidor de la app GeneXus en ejecución | ~25–35 % |
| GeneXus IDE + compilador (-J-Xmx) | Proceso de build / compilación | ~12–20 % |
| Margen libre (headroom) | Picos de carga, otras apps, swapping | Resto (mínimo 30 %) |
Regla de oro
⚠️ Tomcat (Xmx) + Compilador GeneXus (Xmx) no deben superar el 50 % de la RAM total del equipo.Esta regla deja siempre al menos el 50 % restante para el SO, procesos del sistema y headroom. Ignorarla puede causar swapping y degradar drásticamente el rendimiento.
2. Ejemplos Prácticos por Cantidad de RAM
En todos los casos se aplica el criterio: Tomcat Xmx ≈ 25–35 % de la RAM y compilador GeneXus ≈ 12–20 % de la RAM.
Equipo con 8 GB de RAM
Con solo 8 GB el margen es ajustado. Se prioriza Tomcat y se recorta el compilador al mínimo funcional.
| Componente | Valor recomendado | % de la RAM |
|---|---|---|
| SO Windows | ~1.5 GB reservado | ~19 % |
| Tomcat — Initial pool (Xms) | 1024 MB | 12.5 % |
| Tomcat — Maximum pool (Xmx) | 2048 MB | 25 % |
| GeneXus compilador (-J-Xmx) | 1024 MB | 12.5 % |
| Margen libre estimado | ~3.5 GB | ~44 % |
-J-Xmx1024m -J-Xms256m -encoding utf88 GB es el mínimo aceptable para correr GeneXus + Tomcat en simultáneo. Con builds grandes puede haber lentitud notable.
Equipo con 16 GB de RAM — ejemplo: PC3191
Con 16 GB hay buen margen. Se puede dar aire tanto a Tomcat como al compilador sin comprometer el sistema.
| Componente | Valor recomendado | % de la RAM |
|---|---|---|
| SO Windows | ~2.5 GB reservado | ~16 % |
| Tomcat — Initial pool (Xms) | 2048 MB | 12.5 % |
| Tomcat — Maximum pool (Xmx) | 4096 MB | 25 % |
| GeneXus compilador (-J-Xmx) | 2048 MB | 12.5 % |
| Margen libre estimado | ~7.5 GB | ~47 % |
-J-Xmx2048m -J-Xms512m -encoding utf8Si Tomcat no está corriendo al momento de compilar, se puede subir el compilador hasta -J-Xmx3072m temporalmente.
Equipo con 32 GB de RAM — ejemplo: PC15653915
Con 32 GB hay amplio margen para configurar Tomcat con más headroom y un compilador robusto.
| Componente | Valor recomendado | % de la RAM |
|---|---|---|
| SO Windows | ~3 GB reservado | ~9 % |
| Tomcat — Initial pool (Xms) | 4096 MB | 12.5 % |
| Tomcat — Maximum pool (Xmx) | 8192 MB | 25 % |
| GeneXus compilador (-J-Xmx) | 3072 MB | ~9.5 % |
| Margen libre estimado | ~17 GB | ~53 % |
-J-Xmx3072m -J-Xms512m -encoding utf8Tomcat + compilador suman 11 GB sobre 32 GB totales (34 %), dentro del límite del 50 %.
3. Configuración por Equipo
Tabla comparativa
| Característica | PC3191 | PC15653915 |
|---|---|---|
| Procesador | Intel Core i7-7700 @ 3.60 GHz | Intel Core i5-13400 @ 2.50 GHz (13th Gen) |
| RAM instalada | 16.0 GB | 32.0 GB |
| Sistema operativo | Windows 11 Pro 23H2 | Windows 11 Pro |
| JDK | Oracle JDK 21 (21.0.7+8-LTS) | Oracle JDK 21 |
| Tomcat | Apache Tomcat 10.1.44 | Apache Tomcat 10.1 |
| Tomcat Xms recomendado | 2048 MB | 4096 MB |
| Tomcat Xmx recomendado | 4096 MB | 8192 MB |
| Compilador GeneXus Xmx | 2048 MB | 3072 MB |
PC3191 — Intel i7-7700 / 16 GB RAM
GeneXus — Compiler Options
Ubicación: GeneXus IDE → Tools → Preferences → Build → Advanced → Compiler Options
-J-Xmx2048m -J-Xms512m -encoding utf8
Apache Tomcat — Java Memory
Ubicación: Apache Tomcat 10.1 Properties → pestaña Java
| Campo | Valor anterior | Valor aplicado |
|---|---|---|
| Initial memory pool (Xms) | 1028 MB | 2048 MB |
| Maximum memory pool (Xmx) | 4096 MB | 4096 MB (sin cambio) |
Java Options adicionales (Tomcat)
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+DisableExplicitGC
PC15653915 — Intel i5-13400 / 32 GB RAM
GeneXus — Compiler Options
Ubicación: GeneXus IDE → Tools → Preferences → Build → Advanced → Compiler Options
-J-Xmx3072m -J-Xms512m -encoding utf8
Apache Tomcat — Java Memory
Ubicación: Apache Tomcat 10.1 Properties → pestaña Java
| Campo | Valor aplicado |
|---|---|
| Initial memory pool (Xms) | 4096 MB |
| Maximum memory pool (Xmx) | 8192 MB |
Java Options adicionales (Tomcat)
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+DisableExplicitGCTomcat + compilador suman ~11 GB sobre 32 GB totales (34 %), dentro del límite seguro del 50 %.
4. Pasos para Aplicar la Configuración
GeneXus — Compiler Options
- Abrir GeneXus 18
- Ir a: Tools → Preferences → Build → Advanced
- Localizar el campo “Compiler Options”
- Reemplazar el valor según el equipo (ver sección 3)
- Guardar y reiniciar GeneXus
Apache Tomcat — Java Memory
- Abrir Configure Tomcat (Tomcat10w.exe) como Administrador
- Ir a la pestaña “Java”
- Actualizar Initial memory pool y Maximum memory pool según el equipo
- Agregar las Java Options indicadas en la sección 3 (campo Java Options)
- Hacer clic en “Aplicar” y luego “Aceptar”
- Reiniciar el servicio de Tomcat para que los cambios tomen efecto
5. Referencia de Opciones JVM
| Opción | Aplica a | Descripción |
|---|---|---|
-J-Xmx |
GeneXus compilador | Memoria máxima del proceso de compilación |
-J-Xms |
GeneXus compilador | Memoria inicial del proceso de compilación |
-Xmx (Max pool) |
Tomcat | Memoria máxima del heap de la JVM de Tomcat |
-Xms (Init pool) |
Tomcat | Memoria inicial del heap. Subirla evita expansión progresiva |
-XX:+UseG1GC |
Tomcat | Activa el Garbage Collector G1, óptimo para heaps de 2–8 GB en JDK 21 |
-XX:MaxGCPauseMillis=200 |
Tomcat | Limita pausas de GC a 200 ms para mejor respuesta de la app |
-XX:+DisableExplicitGC |
Tomcat | Impide que librerías externas fuercen un GC manual |
-encoding utf8 |
GeneXus compilador | Codificación de caracteres. No modificar. |
Dirección de Informática — Municipalidad de Río Cuarto | Última actualización: Junio 2025