11.2.2.3.5 : Réduire l'empreinte mémoire
Une consommation mémoire trop importante peut fortement ralentir l'exécution d'un programme. Dans les cas extrêmes, l'ordinateur peut être amené à utiliser fortement l'espace d'échange, ou SWAP noteL'espace d'échange, ou SWAP, est une région du disque dur de l'ordinateur qui est utilisée en substitut de la RAM pour pouvoir continuer les calculs lorsque celle-ci est pleine., car la mémoire RAM est saturée. Mais comme cet espace de stockage est situé sur le disque dur, les accès aux données qui y sont sauvegardées sont extrêmement ralentis.
Il suffit qu'un programme consomme trop de mémoire sur un nœud de calcul pour ralentir tous les autres jobs. Ce problème est donc étendu à tous les programmes utilisés sur des centres de calcul. Pour éviter ce ralentissement généralisé, certains centres de calcul interrompent brutalement les calculs dont la consommation de mémoire dépasse un certain seuil.


On peut réduire l'empreinte mémoire en évitant de stocker des données dont on n'a pas besoin, ou bien qui sont imposantes mais rapides à recalculer lorsqu'on en a besoin.

Il faut aussi s'assurer qu'on ne stocke pas accidentellement plusieurs exemplaires de la même donnée, ce qui arrive facilement dans des langages basés sur la sémantique de copie comme C++. Si c'est le cas, il vaut mieux désigner un exemplaire maître de la donnée et transmettre des pointeurs/références aux parties du programme qui en ont besoin.

Un autre problème, qui survient notamment dans les langages de programmation où la mémoire est gérée manuellement, est la "fuite mémoire", où l'on oublie de libérer de la mémoire préalablement allouée qui n'est plus utilisée.

On doit également éviter d'effectuer un grand nombre de petites allocations (ex : une allocation pour un seul nombre flottant) car chaque allocation est associée à des données de gestion pour le système, qui peuvent dans ces cas extrêmes peser plus lourd en mémoire que le contenu de l'allocation. Mieux vaut mutualiser une grande allocation en regroupant les données sous forme de structures et/ou de tableaux. Cela permettra aussi de diminuer le temps passé dans les fonctions d'allocations et d'améliorer la localité des données.

En regroupant plusieurs tableaux au sein d'une classe, qui exposera des fonctions permettant de les manipuler ensemble, il sera possible à la fois de mutualiser les allocations et d'augmenter la clarté du programme.