我正在创建许多自定义控件并将它们添加到FlowLayoutPanel.还有一个在设计时创建并填充的ContextMenuStrip.
每次将控件添加到面板时,都会将其ContextMenuStrip属性分配给此菜单,以便所有控件"共享"相同的菜单.但我注意到当从面板中删除控件并将其丢弃时,任务管理器中使用的内存不会丢失.每次创建控件并将其添加到布局面板时,它都会上升大约50kB.
我下载了.NET Memory Profiler的试用版,它显示在控件处理完毕后,有一些菜单条的引用.我更改了代码,在处理控件之前将ContextMenuStrip属性显式设置为null,是的,内存现在已经释放了.为什么是这样?GC不应该清理这种类型的东西吗?