C#-GDI内存开销问题解决方案
最近在工作中遇到GDI内存问题:
在32位系统中
使用GDI绘制700*700矩形,10万次,内存开销为26M。
使用GC强制回收内存开销降至9M。
问,在不使用GC的情况下,有什么办法可以减少GDI内存损耗?
注:绘制完毕时GDI资源已经释放
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
现已查明,内存损耗最大的是Brush类型,由于Brush类型是非托管类型资源,所以不会被c#中GC自动回收,需要手动使用Dispose()释放,否则每new一个这样的实例,就会占用相当大的内存,且不会被释放。对程序来说是一个隐患。
谢谢楼上那位发表的见解了,虽然回答的不对。
说一下我的一点看法,不对请指正。
你的内存损耗是不是主要是开临时图像,如bitmap对象,如果是的话可以不用每次new一个新的图,直接把原来的图擦掉重新画好了