问题:
一进入VS的调试过程,可以看到进程内存以极快的速度增加,着实可怕。
解决方案
查阅了多篇文章后,我尝试从几个角度进行排查:
- 由于是C#与C++的混合编程,仔细检查指针释放;
- 使用了Image等GC不能自动回收(非托管资源)的资源,注意释放;
- 使用了SQLITE,在sqlite数据库使用方法中检查,查看是否存在数据库调用结束后,连接未关闭,连接、命令、适配器未释放的场合;
- 使用System.Timer进行定时内存清理
改进后
可以看到进程内存增加的速度下降。但是,在VS中不方便查看定时清理内存的效果。因此,我直接运行exe并通过任务管理器查看应用占用内存,发现内存的确是有被定时清理。应用的工作效果还有待测试。