C#调用HALCON一种内存异常增长问题
C#调用HALCON,变量管理不当,很容易造成内存泄漏。查找内存泄漏时,我们很容易去找每一个变量,是否及时释放,有没有调用dispose()。但是还有一种情况会造成内存泄漏(这两天困扰了我很久)就是频繁刷新halcon的图像显示窗口。貌似HALCON的图像显示窗口也会存储图像,并且这种存储,靠变量释放是无效的。例如:如果将一副图进行了拷贝,然后,在图像窗口中显示图像。
HOperatorSet.CopyObj(tempimage1, out tempimage2, 1, -1);
HOperatorSet.DispObj(tempimage2,hWindowControl2.HalconWindow);
此时无论是将tempimage1,和tempimage2进行释放,都无法释放掉窗口中图像的内存。而如果上述步骤重复进行,则会出现更多的无法释放的内存。导致内存泄漏。另一个严重的问题是会影响图像显示时间。导致程序运行效率下降。
解决方案也简单,在显示图像前调用清屏操作。
hWindowControl2.HalconWindow.ClearWindow();