Análisis de código fuente ordenable
El asignador de memoria utiliza un método de administración del grupo de memoria y está ubicado entre la capa del programa del usuario y la capa del kernel. Responde a la solicitud de asignación del usuario, solicita memoria del sistema operativo y luego la devuelve al programa del usuario.
Para mantener una asignación eficiente, el asignador generalmente solicita una porción de memoria del sistema operativo por adelantado. Cuando un programa de usuario solicita y libera memoria, el asignador administra la memoria y decide si devolverla al sistema operativo mediante algunas estrategias algorítmicas. La mayor ventaja de hacer esto es que puede evitar que los programas de usuario llamen con frecuencia al sistema para asignar memoria, lo que permite que los programas de usuario utilicen la memoria de manera más eficiente y rápida.
Personalmente, no sé mucho sobre el principio de asignación de memoria de ptmalloc, por lo que no enseñaré a nadar con hacha aquí. Los estudiantes interesados pueden echar un vistazo al análisis del código fuente ptmalloc de gestión de memoria glibc de Huating.
Con respecto a cómo elegir estos tres asignadores de memoria, la mayoría de la información en línea recomienda abandonar el ptmalloc nativo de glibc y usar jemalloc o tcmalloc como asignador predeterminado. Debido a que el principal problema de ptmalloc es en realidad el desperdicio de memoria, la fragmentación de la memoria y los problemas de rendimiento causados por los bloqueos, jemalloc y tcmalloc son más adecuados para la fragmentación de la memoria y los subprocesos múltiples.
Actualmente jemalloc se utiliza en Firefox, FaceBook, etc. , y es el asignador de memoria recomendado predeterminado para MariaDB, Redis y Tengine, mientras que tcmalloc se usa en WebKit, Chrome, etc.