问题描述
- C# Winfrom项目,运行程序一段时间后提示“内在不足”的报错信息。
-
在C# Winfrom项目,有一个form窗体,六个Panel控件(用于放置显示监控视频图像的用户自定义控件),
还有一个timer计时器控件(设置每隔2分钟调用其它六个监控视频图像放到对应的Panel控件)目前遇到的问题是,监控点的视频图像有的由于网络好点显示加载视频图像快点,有的由于网络不是太好加载显示视频图像慢点。
在form窗体运行一段时间后,导致这个form窗体的六个Panel控件在轮流显示相应的六个监控视频图像后,提示“内在不足”的报错信息。
发现在这个时间段内,电脑CPU的使用率为90%至100%之间。是不是将timer计时器控件的时间间隔设置多点(例如设置每隔6分钟)或者将运行这个程序电脑的硬件配置再改善下,硬件配置高点。请问这样可以解决此问题吗?
还是有其它的办法解决此问题?最好能提供相关的参考资料。谢谢!
解决方案
监控视频图像的用户自定义控件是否有使用C++ COM等外部库,是否正确释放非托管资源,这些库本身有没有内存泄漏
解决方案二:
长时间运行内存泄漏,得重点关注非托管资源的处理,建议对代码中申请、释放资源的地方进行配对检查,防止由于异常发生后,该释放或者关闭的资源
没有做。由于是实时监控,重点查在timer中申请的资源。看是不是每轮运行完后内存占用都增长。如果经验不足,可以考虑借助工具来排查,BoundsChecker Suite在官网有试用版,可以一用
解决方案三:
timer的使用要小心,如果循环内的处理比较耗时,会出现重入现象;建议可以改为线程
解决方案四:
Timer计时器控件会产生循环内存的,导致内存泄漏,所以会产生内存不足的错误。
时间: 2024-09-08 13:21:48