Problemas de fragmentación de AIX

Se puede agotar el almacenamiento dinámico nativo sin que las páginas Inuse se acerquen a 65535 páginas Inuse. Puede deberse a la fragmentación de los almacenamientos dinámicos de AIX® malloc , que es la forma en que AIX maneja el almacenamiento dinámico nativo de la JVM.

Esta condición OutOfMemory se puede identificar de nuevo en las instantáneas de svmon. Anteriormente la columna importante que se debía mirar para una fuga de memoria era el valor Inuse. Para problemas en los almacenamientos dinámicos de AIX malloc , es importante consultar la columna Rango de direcciones . La columna Rango direcc detalla las páginas que se han asignado, mientras que la columna Inuse detalla el número de páginas que están en uso (confirmadas).

Es posible que páginas asignadas no se hayan entregado de nuevo al proceso una vez que se han liberado. Las páginas no entregadas producen una discrepancia entre el número de páginas asignadas y el número de páginas confirmadas.

Tiene diversas variables de entorno para cambiar el comportamiento del propio algoritmo malloc y solucionar problemas de este tipo:
MALLOCTYPE=3.1
Esta opción permite al sistema volver a una versión anterior del esquema de asignación de memoria en el que la asignación de memoria se realiza en potencias de 2. El asignador 3.1 Malloc, a diferencia del algoritmo predeterminado, libera de nuevo páginas de memoria al sistema para su reutilización. La política de asignación 3.1 está disponible para su uso sólo con aplicaciones de 32 bits.
MALLOCMULTIHEAP=heaps:n, tamañoconsiderado
De manera predeterminada, el subsistema malloc utiliza un único almacenamiento dinámico. MALLOCMULTIHEAP permite a los usuarios habilitar el uso de varios almacenamientos dinámicos de memoria. Varios almacenamientos dinámicos de memoria pueden producir fragmentación de memoria y por lo tanto la utilización de esta variable de entorno se debe evitar.
MALLOCTYPE=grupos
Los paquetes Malloc proporcionan una extensión basada en paquetes del asignador predeterminado. Está pensado para mejorar el rendimiento de malloc para aplicaciones que emiten gran cantidad de solicitudes de asignación pequeña. Cuando se habilitan los paquetes malloc, las solicitudes de asignación que se encuentran dentro de un rango predefinido de tamaños de bloque las procesan los paquetes malloc. Debido a variaciones en los requisitos y uso de la memoria, es posible que algunas aplicaciones no se beneficien del esquema de asignación de memoria utilizado por los paquetes malloc. Por lo tanto, no es aconsejable habilitar los paquetes malloc para todo el sistema. Para obtener un rendimiento óptimo, habilite y configure los paquetes malloc para cada aplicación individualmente.
Nota: Estas opciones pueden provocar un porcentaje del impacto en el rendimiento. Además, el asignador malloc 3.1 no da soporte a las opciones Malloc Multiheap ni Malloc Buckets.
MALLOCBUCKETS= number_of_buckets:128,bucket_sizing_factor:64,blocks_per_bucket:1024: bucket_statistics: <path name of file for malloc statistics>
Consulte MALLOCTYPE=buckets.