Bonjour à tous !
Je bosse actuellement sur le développement d'un programme d'analyse de logs. Sans rentrer dans le détail, il ouvre des fichiers matchant avec un motif donné dans un répertoire spécifié, lit le contenu et enregistre des alertes dans une base de données si il récupères
n occurrences d'un certain message, ou un message non identifié par l'administrateur.
Le fonctionnement est basé sur une architecture objet ; donc pour chaque message lu présentant a priori un intérêt, un certain nombre d'objets est créé en mémoire. Le programme est supposé tourner en arrière plan sur des serveurs, donc il est primordial qu'il ne consomme pas trop de mémoire. Tous mes objets créés sont créés par un new et supprimés par un delete, lorsque je n'en ai plus besoin ou que le programme est interrompu ; pareil pour les variables de type tableau effacées par delete[] ; j'ai vérifié par des écritures dans des fichiers qu'il y avait bien autant d'objets créés que supprimés.
Cependant, si je fais un top pendant l'exécution, je monte à 200Mo de mémoire consommée ; c'est normal parce que je lis énormément de lignes, mais après qu'elles soient lus la mémoire n'est pas libérée, elle ne l'est qu'après l'arrêt du programme...
Je fais donc appel à votre science pour savoir s'il n'est pas possible de faire des appels réguliers à un équivalent du garbage collector, ou quelque chose qui puisse "officialiser" la libération de la mémoire pendant l'exécution...
Merci à vous !