Asignador / administrador de memoria personalizado en C? cual enfoque

Busqué algunos administradores / asignadores de memoria (personalizados) escritos en cy revisé algunos artículos,

Algunos enlaces:

  • IBM – Gestión de memoria interna
  • Valgrind – Cómo sombrear cada byte de memoria utilizado por un progtwig
  • Pregunta de desbordamiento de stack: escriba su propio administrador de memoria
  • ned Productions – Página de inicio de nedmalloc
  • Ajuste segregado de dos niveles (TLSF) – Sitio web
  • Wikipedia – Asignación de memoria dinámica
  • Fourmilab – El Asignador de Memoria BGET

Tengo que instalar un pequeño servidor web en una caja de arena utilizando uno disponible y no tengo ningún problema en escribir envoltorios para el manejo de subprocesos / esquema de asignación. Apache WS usa grupos de memoria para manejar la memoria y los grupos no son persistentes, es base por solicitud. ¿Pueden ustedes sugerir algo? ¿Algún enfoque bueno / mejor para este problema? Mis requisitos son los siguientes:

  1. La asignación y la desasignación (tiempo de respuesta limitado) deben conocerse de antemano, es decir, algún costo constante O (c), donde c es constante.

  2. La fragmentación a partir de tamaños o secuencias de asignación / desasignación heterogénea debe manejarse, puedo escribir el esquema / envoltorio para proporcionar el mismo.

Realmente aprecio su ayuda e ideas!

La fragmentación a partir de tamaños o secuencias de asignación / desasignación heterogénea debe manejarse, puedo escribir el esquema / envoltorio para proporcionar el mismo.

Para evitar la fragmentación, deberá utilizar una estrategia de asignación de bloques híbrida. Híbrido aquí significa bloques de elementos de diferente tamaño que tener bloques de elementos de tamaño único, es decir, el asignador (o una envoltura alrededor de él) debe mantener bloques de elementos de diferentes tamaños (pequeño, mediano y grande, etc.). Todas las solicitudes de asignación deben redondearse hasta el límite del bloque más cercano. Esta estrategia garantizará que no sufra fragmentación externa, pero puede causar fragmentación interna. Puedes encontrar más información en los siguientes enlaces:

http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf

Solo para agregar uno más a tu lista

Herramientas de rendimiento de Google

Mejora significativamente el rendimiento de la asignación de memoria y tiene CPU y perfiladores de memoria. Su implementación de Thread-Caching Malloc está destinada a ser bastante eficiente para aplicaciones multiproceso.