我这边有个C# 联合Halcon编程的平台,平台应用是32位的应用程序,开启了大内存感知,所以最大调用内存能达4G,实测确实可以调用到4G内存。
在平台中调用了版本为17.12的x86版的halcon.dll ,调用方法:调用halcon脚本引擎,在脚本引擎中执行halcon方法脚本。
在halcon软件中循环长时间执行这个脚本没有任何问题,在平台中长时间循环调用脚本引擎,前面跑一切顺利,但是大概执行4到8小时会出现问题,脚本引擎返回报错信息:Not enough memory available。
平台已经用内存监控工具检测过,没有内存泄露,刚开始执行的内存大小,与执行4小时后占用的内存大小没什么变化,而且我可以肯定我平台只用了700M,还有3G多的空间可以给脚本引擎去执行,所以应该不存在脚本引擎不够内存去执行的,所以可以肯定是在halcon脚本引擎中导致的。
但是脚本中所有H开头的对象都在用完就释放了,而且在halcon软件中单独循环执行却没问题(这相当于排除了halcon脚本内存泄露的可能),这就让人十分费解了,到底是哪里出了问题。
平台太大无法迅速升级为64位,所以无法更换成64位的halcon.dll
有同行大佬也遇到过这样的问题吗?能把解决方案分享一下给小弟吗?
已经试过的方案:
1.设置halcon脚本引擎最大内存空间
2.设置halcon缓存模式为:idle
电脑配置:
系统:win10 64位
CPU: i7 7代
内存: 8g
GPU: 2G(任务管理器中看到没有用上)