Existe-t-il un moyen de vider les objets en mémoire à partir d'un processus ruby ??en cours d'exécution?
Question
Tuer le processus tout en obtenant cette information irait bien.
La solution
Pour les plus fervents, il existe également BleakHouse qui vous donne une copie spéciale de ruby ??spécialement compilée avec un meilleur suivi des fuites de mémoire powarz
Autres conseils
Une méthode rapide et fictive serait ObjectSpace.each_object {| e | p e}
. Vous pouvez effectuer des tests pour déterminer ce que vous souhaitez conserver, ou écarter les objets.
Pour 1.9.2 / 1.9.3, il y a gem heap_dump, il peut être injecté dans un processus en cours d'exécution à l'aide de gdb (mais la solution la plus stable consiste à l'inclure dans le processus proprement dit, sans perte de performances).
Il supprime les références aux objets, pas aux objets eux-mêmes, mais ceci est utilisable si vous souhaitez combattre les fuites