Bonjour à tous,


J'ai un programme qui se charge de charger des données stockées dans une base de données pour les stocker dans des objets en mémoire.
A la fin du programme, je calcul auprès de mes gestionnaire la taille utilisée des objets stockées (sizeof(T) * Ges<T>.getCount()), où T peut-être un client, un véhicle, enfin bref, un objet metier.
J'ai également un gestionnaire de mémoire qui possède une map référençant les pointeurs avec leur bloc de données contenant notemment la taille allouée pour chaque pointeur.

Je n'ai pas d'IHM, mon programme est une console, en dehors de mes objets métiers, j'ai 4 gestionnaires qui ne stockent quasiment rien (Un gestionnaire de configuration, un gestionnaire de log, un gestionnaire IO, et le gestionnaire de mémoire, désactivé en debug).

Et tous mes objets metier sont stockés dans des vectors, sous forme de pointeur. Après chargement, j'ai 241852 pointeurs stockés dans ces vectors.
Ca bouffe quelle taille un pointeur ?

Après quelques tests, je relève ces données :
Debug :
- Utilisation des objets metiers : 393,94Mo
- Utilisation de la mémoire calculée par le gestionnaire de mémoire : 393,95Mo
- Utilisation de la mémoire indiqué par le gestionnaire de processus Windows : 1 217Mo

Et en Relase (exécution de l'exe directement, sans passer par VS)
- Utilisation des objets metier : 257,703Mo
- Le gestionnaire de mémoire est désactivé
- Utilisation de la mémoire indiqué par le gestionnaire de processus Windows : 515,10Mo

Comment expliquer cette utilisation de mémoire indiqué par le gestionnaire Windows comme 3 fois plus que calculée dans mon programme en debug et 2 fois plus en Release ?

Peut-t-on réduire ça ?


Merci

A bientôt