Hay dos tipos de memoria de pila de memoria y memoria de montón. Todas las asignaciones dinámicas van a la memoria de pila y el resto de las asignaciones estáticas y las asignaciones de variables van a la memoria de pila. Cada vez que se ejecuta un programa Java en la máquina virtual Java, utiliza la memoria del montón para administrar los datos. Task Engine se ejecuta en JVM (Java Virtual Machine). La jerarquía se muestra gráficamente a continuación.
Entonces, ahora que llega a la memoria del montón, el montón es una ubicación en la memoria utilizada por la Máquina Virtual Java (JVM). La máquina virtual de Java tiene un montón que se comparte entre todos los subprocesos de la máquina virtual de Java. El montón es el área de datos en tiempo de ejecución desde la cual se asigna la memoria para todas las instancias de clase y arrays. El montón se crea en el inicio de una máquina virtual. El almacenamiento en montón para los objetos se recupera mediante un sistema de administración de almacenamiento automático (conocido como recolector de elementos no utilizados); los objetos nunca se reasignan explícitamente. La máquina virtual de Java no asume ningún tipo particular de sistema de gestión de almacenamiento automático, y la técnica de gestión de almacenamiento puede elegirse de acuerdo con los requisitos del sistema del implementador. El montón puede tener un tamaño fijo o puede expandirse según lo requiera el cálculo y puede contraerse si se vuelve innecesario un montón más grande.
Una implementación de Java Virtual Machine puede proporcionar al programador o al usuario control sobre el tamaño inicial del almacenamiento dinámico, así como, si el almacenamiento dinámico puede expandirse o contraerse dinámicamente, control sobre el tamaño máximo y mínimo del almacenamiento dinámico. La siguiente condición excepcional está asociada con el almacenamiento dinámico cuando un cálculo requiere más almacenamiento dinámico del que puede poner a disposición el sistema de gestión de almacenamiento automático, la máquina virtual de Java genera un error OutOfMemoryError.
De forma predeterminada, el tamaño del almacenamiento dinámico de la JVM es de 1 GB, que suele ser suficiente para acomodar los datos utilizados por el motor de tareas. Sin embargo, es posible que se requiera un tamaño de almacenamiento dinámico mayor en algunas circunstancias, por ejemplo, cuando el tamaño promedio de los parámetros en una tarea es muy grande. En estas circunstancias, el siguiente elemento de registro se registra en los archivos de registro del motor de tareas. Si este elemento de registro aparece regularmente, debe aumentar el tamaño del almacenamiento dinámico.
Ahora surge la pregunta de cómo aumentar el tamaño del montón de memoria. Entonces, una solución común ahora para cambiar/aumentar el tamaño del almacenamiento dinámico de JVM es posible mediante el uso de opciones de línea de comandos.
-Xms : To set an initial java heap size -Xmx : To set maximum java heap size -Xss : To set the Java thread stack size -Xmn : For setting the size of young generation, rest of the space goes for old generation
Procedimiento: para aumentar el tamaño del almacenamiento dinámico de la JVM del servidor de aplicaciones
- Inicie sesión en el Servidor de administración del servidor de aplicaciones.
- Navegue a las opciones de JVM.
- Edite la opción -Xmx256m.
- Esta opción establece el tamaño del montón de JVM.
- Establezca la opción -Xmx256m en un valor más alto, como Xmx1024m.
- Guarde la nueva configuración.
Nota:
El proceso para cambiar el tamaño del montón del servidor web es el mismo, solo necesita iniciar sesión en el servidor de administración del servidor web. Después de ese proceso es el mismo. Es una buena práctica para grandes proyectos de producción establecer los tamaños de almacenamiento dinámico mínimo -Xms y máximo -Xmx en el mismo valor. Para una recolección de elementos no utilizados eficiente, el valor -Xmn debe ser menor que el valor -Xmx. El tamaño del almacenamiento dinámico no determina la cantidad de memoria que usa su proceso.
Publicación traducida automáticamente
Artículo escrito por nikhiltanna33 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA