C#写的程序为何那么吃内存啊?

kitten_scratch 2006-12-16 02:39:18


我用C#写的一个截图工具
很简单的功能
截取全屏,暂时保存在Bitmap pic中
然后保存到电脑上

但是截图截了几次后
内存一路狂长,从几M到上百M
截一次图就要吃掉10多M内存
太夸张类...不知如何解决
dispose掉那个pic似乎也没用
...全文
288 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kitten_scratch 2006-12-16
  • 打赏
  • 举报
回复
问题解决了!
使用 System.GC.Collect(); 来强制执行"垃圾回收器"
很对资源都是标记不再被应用,但是出于回收资源费时费力的原因,并没有真正清理出内存
使用 System.GC.Collect()来强制清理。
现在程序的资源占用就合理了,26m-19m浮动,属于正常了。
ice_frank 2006-12-16
  • 打赏
  • 举报
回复
UP
kitten_scratch 2006-12-16
  • 打赏
  • 举报
回复
对了,定义了全局的hook,用来响应截图事件,难道这个有关系吗?
kitten_scratch 2006-12-16
  • 打赏
  • 举报
回复
刚才统计了一下,截一次图就吞我7M的内存,等差数列增长

除了导入dll文件,就定义了一个bitmap(虽然有其它的功能,但是没有使用,这个应该没关系的吧)

大家有没有合适的资源资源管理的参考作品啊?
htqx 2006-12-16
  • 打赏
  • 举报
回复
要释放内存阿。
flyaqiao 2006-12-16
  • 打赏
  • 举报
回复
学习
viena 2006-12-16
  • 打赏
  • 举报
回复
因为内存好吃~
  • 打赏
  • 举报
回复
建议在有些时候重载窗口
还有就是剪贴板的事情可能也有
灰太狼 2006-12-16
  • 打赏
  • 举报
回复
占10M~20M内存是正常的,C#要在framework下运行,就相当于java的虚拟机一样,但是如果是小程序的话,点到100M以上就是程序有问题了,肯定有资源没有释放。
灰太狼 2006-12-16
  • 打赏
  • 举报
回复
占10M~20M内存是正常的,C#要在framework下运行,就相当于java的虚拟机一样,但是如果是小程序的话,点到100M以上就是程序有问题了,肯定有资源没有释放。
study_boy 2006-12-16
  • 打赏
  • 举报
回复
托管堆的结果,一个简单的小程序都要占个10几20M,我也想知道如何能降低C#做的程序的开销
CCjian 2006-12-16
  • 打赏
  • 举报
回复
试试关闭内存流,及时显示消除对象引用,截之前对现有的资源清空,然后再截。

111,110

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧