la fragmentation dans la lutte contre le gestionnaire de mémoire personnalisé
-
06-09-2019 - |
Question
J'ai écrit un c / c ++ gestionnaire de mémoire pour les allocations de tas (surcharge nouveau / supprimer et malloc / realloc / gratuit, basé sur malloc Doug Lea, mais conçu pour être attendre gratuit) et semblent avoir des problèmes avec la fragmentation. Y a-t-il des bonnes ressources là-bas qui détaillent les bonnes stratégies pour éviter la fragmentation via le gestionnaire?
S'il vous plaît noter que je ne peux pas réorganiser la mémoire qui a déjà été alloué (ne pas utiliser des pointeurs intelligents avec GUIDs) et réécrivant le système à utiliser des pools au lieu des allocations de tas est infaisable.
Merci,
Grant
La solution
Vous pouvez vous inspirer de jemalloc ( http: // people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf ) - ce allocateur est utilisé dans le nouveau Firefox explicitement en raison de ses capacités anti-fragmentation
.Autres conseils
Jetez un oeil à la façon dont des projets plus matures comme le font glibc.
Un rapide Google trouve cette , avec une pile de références.