社区
C#
帖子详情
C#写的程序为何那么吃内存啊?
kitten_scratch
2006-12-16 02:39:18
我用C#写的一个截图工具
很简单的功能
截取全屏,暂时保存在Bitmap pic中
然后保存到电脑上
但是截图截了几次后
内存一路狂长,从几M到上百M
截一次图就要吃掉10多M内存
太夸张类...不知如何解决
dispose掉那个pic似乎也没用
...全文
288
12
打赏
收藏
C#写的程序为何那么吃内存啊?
我用C#写的一个截图工具 很简单的功能 截取全屏,暂时保存在Bitmap pic中 然后保存到电脑上 但是截图截了几次后 内存一路狂长,从几M到上百M 截一次图就要吃掉10多M内存 太夸张类...不知如何解决 dispose掉那个pic似乎也没用
复制链接
扫一扫
分享
转发到动态
举报
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
打赏
举报
回复
因为内存好吃~
非专业开发Five
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
打赏
举报
回复
试试关闭内存流,及时显示消除对象引用,截之前对现有的资源清空,然后再截。
C#
内存
修改器(仿CE)
好吧 我承认这东西效率真不咋地 也别喷我的代码 我承认我的代码
写
的也不咋地 总之 有个思路就行了 是我仿照 CE 的界面做的 不得不说 CE 的搜索速度真的很快 还有就是 这
程序
可能存在许多潜在的bug 比如
内存
溢出 不过我能知道的或者知道怎么解决的问题 我已近解决了 总之 这代码仅供参考
C#
常用类库(100多个)
包含文件、网络、http、多线程、控件、office、IO、JSON、压缩文件、文本字符串、正则表达式、HTML、邮件、系统、数据库、加密解密等操作类
C#
编程从入门到精通
本书既为入门者提供了简单教程,同时也为高级编程人员提供了大量的例程。 本书用来帮助现在的C/C++开发者迅速跟进至
C#
。
C#
入坑JAVA 为什么
c#
(.net)
程序
占用的
内存
远低于Java?
NET 的
内存
管理: .NET Framework 和 .NET Core 使用托管堆进行
内存
管理,使用垃圾回收器来自动回收不再使用的对象。.NET 的
内存
管理: .NET Framework 和 .NET Core 使用托管堆进行
内存
管理,使用垃圾回收器来自动回收不再使用的对象。Java 虚拟机 (JVM) 的堆
内存
管理: JVM 使用分代垃圾回收器来管理堆
内存
。
C#
内存
分配:
C#
中的对象分配通常是通过堆进行的,但 .NET 提供了对象池和
内存
池等机制,可以更有效地管理对象的生命周期和
内存
分配。
C#
内存
操作实现:读
写
内存
通过
C#
,我们可以实现对
内存
的读取和
写
入,这在某些场景下非常有用。要
写
入数据到
内存
中,我们同样需要获取目标进程的句柄,并使用该句柄来
写
入
内存
。要读取
内存
中的数据,我们需要获取目标进程的句柄,并使用该句柄来读取
内存
。上述示例中,我们同样使用Win32 API函数来打开目标进程并获取进程的句柄。上述示例中,我们使用Win32 API函数来打开目标进程并获取进程的句柄。最后,我们将读取到的值输出到控制台,并关闭进程句柄。函数将一个整数值
写
入到指定的
内存
地址。最后,我们输出
写
入成功的提示,并关闭进程句柄。
C#
111,110
社区成员
642,562
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章