Memory leak with ContextMenuStrip

Posted by Dave on Stack Overflow See other posts from Stack Overflow or by Dave
Published on 2010-05-08T00:28:31Z Indexed on 2010/05/08 0:38 UTC
Read the original article Hit count: 242

Filed under:
|

I'm creating a lot of custom controls and adding them to a FlowLayoutPanel. There is also a ContextMenuStrip created and populated at design time.

Every time a control is added to the panel it has its ContextMenuStrip property assigned to this menu, so that all controls "share" the same menu. But I noticed when the controls are removed from the panel and disposed of, the memory in use in Task Manager doesn't drop. It rises around 50kB every time a control is created and added to the layout panel.

I downloaded the trial of .NET Memory Profiler and it showed there were references to the menu strip hanging around after the controls were disposed. I changed the code to explicitly set the ContextMenuStrip property to null before disposing of the control, and yep, the memory is now released. Why is this? Shouldn't the GC clean up this type of thing?

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET