Recepción de excepciones OutOfMemoryError

Una excepción de tipo " OutOfMemoryError " puede deberse a que se ha agotado el espacio en el montón de Java™ o a que se ha agotado el espacio en cualquiera de las áreas privadas de MVS.

Si el montón de Java se agota, se recibe un mensaje de error que indica una condición de desbordamiento de pila ( OutOfMemoryError ) con el montón de Java. Si el espacio de direcciones de proceso (es decir, el almacenamiento dinámico nativo) se agota, se recibirá un mensaje de error que explicará que una asignación nativa ha fallado. En los dos casos, es posible que el problema no se deba a una fuga de memoria, sino que simplemente el estado constante del uso de memoria que se requiere es superior al que está disponible. Por lo tanto, el primer paso es determinar qué almacenamiento dinámico se está agotando y aumentar el tamaño de ese almacenamiento dinámico.

Si el problema se produce debido a una fuga de memoria real, el aumento del tamaño del almacenamiento dinámico no solucionará el problema, pero retardará la aparición de las condiciones de error o excepción OutOfMemoryError. Este retardo puede resultar útil en sistemas de producción.

El tamaño máximo de un objeto que se puede asignar lo limita sólo la memoria disponible. El número máximo de elementos de matriz soportados es 2 ^ 31-1, el máximo permitido por la especificación de Java Virtual Machine. En la práctica, es posible que no se puedan asignar matrices grandes debido a la memoria disponible. Configure la cantidad total de memoria disponible para los objetos utilizando la opción de línea de mandatos -Xmx. Estos límites se aplican a JVM de 31 bits y a JVM de 64 bits.

Si se produce una excepción de falta de memoria y no se genera ningún mensaje de error, es probable que el almacenamiento dinámico de Java se haya agotado. Para encontrar el problema, puede intentar rastrear o examinar volcados de almacenamiento dinámico. Para obtener más información, consulte Rastreo de fugaso Utilización de volcados de almacenamiento dinámico en la Referencia de máquina virtualJ9.

Si se genera una excepción OutOfMemoryError debido al agotamiento del área de almacenamiento privado bajo la JVM de 31 bits, verifique si la variable de entorno _BPX_SHAREAS está establecida en NO. Si _BPX_SHAREAS se establece en YES, se permite que varios procesos compartan el mismo almacenamiento virtual (espacio de direcciones). El resultado es una reducción mucho más rápida del área de almacenamiento privada. Para obtener más información sobre _BPX_SHAREAS, consulte Establecimiento de _BPX_SHAREAS y _BPX_SPAWN_SCRIPT en la documentación del producto z/OS® .

Algunos valores BPXPRMxx, por ejemplo MAXTHREADS, también pueden causar excepciones OutOfMemoryError. Para obtener más información, consulte Configuración del sistema en la documentación de usuario de OpenJ9.