... | ... | @@ -99,20 +99,23 @@ sudo nano /etc/default/tomcat8 |
|
|
**2**- Cambiar opción [-Xmx128m](http://stackoverflow.com/a/14763095/3406552) por una mayor cantidad de memoria (por ejemplo -Xmx2048m) en la variable `JAVA_OPTS`.
|
|
|
```bash
|
|
|
#Quedando por defecto de la siguiente manera
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xmx2048m --XX:+UseConcMarkSweepGC"
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xmx2048m -XX:+UseConcMarkSweepGC"
|
|
|
```
|
|
|
|
|
|
El indicador `Xmx` especifica el grupo de asignación máxima de memoria para una Maquina Virtual de Java (JVM), mientras que `Xms` especifica el grupo de asignación inicial de memoria.
|
|
|
Esto significa que nuestra JVM se iniciará con una cantidad de memoria `Xms` y podrá usar una cantidad máxima de memoria `Xmx`. Por ejemplo, una JVM podría iniciarse con 1024 MB y permitir que el proceso utilice hasta 2048 MB de memoria:
|
|
|
|
|
|
```bash
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xms1024m -Xmx2048m --XX:+UseConcMarkSweepGC"
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xms1024m -Xmx2048m -XX:+UseConcMarkSweepGC"
|
|
|
```
|
|
|
De igual manera, los indicadores de memoria se pueden especificar en diferentes tamaños como KiloBytes, MegaBytes, GigaBytes, etc.
|
|
|
```bash
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xmx2g --XX:+UseConcMarkSweepGC"
|
|
|
JAVA_OPTS="-Djava.awt.headless=true -Xmx2g -XX:+UseConcMarkSweepGC"
|
|
|
```
|
|
|
El indicador `Xms` no tiene un valor predeterminado y `Xms`, generalmente, tiene un valor predeterminado de 256 MB. Un uso común de estos indicadores es cuando nos encontramos con el clásico error `java.lang.OutOfMemoryError`.
|
|
|
|
|
|
> El recopilador **Concurrent Mark Sweep (CMS)** está diseñado para aplicaciones que prefieren pausas de recolección de basura más cortas y que pueden permitirse compartir recursos del procesador con el recolector de basura mientras la aplicación se está ejecutando. Por lo general, las aplicaciones que tienen un conjunto relativamente grande de datos de larga duración (una gran generación permanente) y se ejecutan en máquinas con dos o más procesadores tienden a beneficiarse del uso de este recopilador. Sin embargo, este recopilador debe considerarse para cualquier aplicación con un requisito de tiempo de pausa bajo. El recopilador de CMS se habilita con la opción de línea de comandos `-XX:+UseConcMarkSweepGC`.
|
|
|
|
|
|
> **NOTA**: Tener en cuenta que la JVM usa más memoria de la que se menciona en la variable `JAVA_OPTS`, debido a los métodos de Java, las pilas de subprocesos, los indicadores nativos que se asignan en memoria separada y las estructuras de datos internos de la JVM.
|
|
|
|
|
|
|
... | ... | |