Je crée beaucoup de contrôles personnalisés et je les ajoute à un FlowLayoutPanel. Il y a aussi un ContextMenuStrip créé et rempli au moment du design.Fuite de mémoire avec ContextMenuStrip
Chaque fois qu'un contrôle est ajouté au panneau, sa propriété ContextMenuStrip est affectée à ce menu, de sorte que tous les contrôles "partagent" le même menu. Mais j'ai remarqué que lorsque les contrôles sont supprimés du panneau et éliminés, la mémoire utilisée dans le Gestionnaire des tâches ne tombe pas. Il augmente d'environ 50 Ko chaque fois qu'un contrôle est créé et ajouté au panneau de disposition.
J'ai téléchargé le procès de .NET Memory Profiler et il a montré qu'il y avait des références à la bande de menu qui traîne après que les contrôles ont été éliminés. J'ai changé le code pour définir explicitement la propriété ContextMenuStrip à null avant de disposer du contrôle, et oui, la mémoire est maintenant libérée. Pourquoi est-ce? Le GC ne devrait-il pas nettoyer ce genre de choses?
http://connect.microsoft.com/VisualStudio/feedback/details/116059/contextmenustrip-memory-leak – CharithJ