admin管理员组文章数量:1656763
这个话题非常重要。勇哥苦于手中的项目遇到这样的问题。
这些问题表现是:
(1)视觉程序内存占用会越来越大。这种内存变大通常是缓慢变大,几天不关机持续运行的话,大到几个G也不稀罕。通常,急速内存变大要容易找到问题些,最怕的是缓慢变大。
(2) 视觉程序会越运行越慢,会影响设备的PPM。通常工厂里的电脑一辈子不会关机,你可别指望他们会每班给你重启软件一次。
(3)程序句柄越来越多,大至几万都有可能。这是一种什么概念呢?你的windows启动后,会发现所有程序的句柄都不会超过6000个,而你的程序就有几万个!
(4)程序的CPU时间高。这种情况下设备运行也会越来越慢。有些程序甚至占用CPU时间跟北京时间走得一样准。这是一种什么概念? 你打开一个记事本,敲几个小时的字,CPU占用时间可能才几秒。
上述问题堪称自动化行业内的常见病。老板和工程师都为它头痛。
先来介绍几个重要的系统进程相关参数,它们分别是:CPU时间
线程
句柄
内存
页面错误
在window10的任务管理器中,它们是通“详细信息”页面的选择列来调出的。见下图。
勇哥就用手中的一个项目,边学习边记录处理这类问题的心得。
这个程序运行后,CPU占有率25%,这个对于四核的Cpu来说,这相当于一个cpu已经被完全占用了。
另一个参数CPU时间,看上去跟北京时间还快。
经检查,下面这几段代码有问题
修改成下面这个样子。
现在CPU占有率正常了, cpu时间也正常了(仅仅是在程序启动后,不运行生产逻辑的阶段cpu时间正常了。但是本程序运行带视觉的生产逻辑后还是会有cpu占用时间多的问题)。
通常cpu占有率高这个比较容易处理,一般是While循环中没有考虑线程睡眠,释放cpu占用。
cpu时间这个是不太好处理的,在这里只是处理程序启动后不运行生产逻辑时的cpu时间高这个问题。
接下来研究一下比较艰难的部分,就是句柄与内存占用持续上升。
勇哥这个项止是基于halcon视觉的,存在每拍照处理一次内存会飙升的问题。另外一个是句柄数也会持续上对于句柄的概念,勇哥认为是win32编程里的一个概念,在win32 api里面,许多api都handle这个参数,可以理解句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数。
如果句柄越来越高,则可以推测程序存在对象一直被创建却没有及时释放的隐患。
下图是勇哥启动程序时的内存与句柄数量,初始值,方便和后面的对照。
经过一次视觉拍照处理后,变成下面这么多
内存增加了88M,句柄增加了35个。</
版权声明:本文标题:c# 定位内存快速增长_C#和halcon的混编程序出现序内存泄露、句柄持续增加、视觉程序运行越来越慢等问题的处理... 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729749237a1211982.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论