请教《内存回收》问题

fut20090715 2009-12-18 03:30:26
今天领导说要解决一个项目里的内存不回收问题

具体内容是打开一个文件后(其中应用了SourceGrid与XML转换)
内存占用很大(500M)
但是使用完毕
gc不能正确回收消耗掉的内存
甚至关闭程序也只能回收40%左右
这样的话客户端的内存很快就被吃完了


请问各位大侠,如何解决这个问题


...全文
129 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fut20090715 2009-12-23
  • 打赏
  • 举报
回复
请问大侠会不会是大对象倒置过多碎片的问题
BlueTrees 2009-12-22
  • 打赏
  • 举报
回复
关闭程序,所有进程占用的内存回收,除了进程进行输入输出,内核对象操作等等导致的操作系统其他部分占用的内存不一定全部回收外,不可能有内存继续占用。

你不用怀疑这一点!你应该考虑是不是你的程序没有能够真正的结束!看看任务管理器里面你的进程是不是还在!
castlooo 2009-12-21
  • 打赏
  • 举报
回复
我遇到过这样的情况,比如list<object>
这样的对象 需要将每个object 清空,最后清空list 才能完全释放内存,仅供参考
qu_zhitao 2009-12-21
  • 打赏
  • 举报
回复
使用完毕后,把它的进程结束掉不行吗??
liuyanfeng23 2009-12-21
  • 打赏
  • 举报
回复
不懂,有点儿优化的意思
fut20090715 2009-12-21
  • 打赏
  • 举报
回复
通过实际验证
同一程序在2003server可以触发内存回收
XP下则无法回收内存
除非关闭整个程序

请问大侠们为什么有此现象

另外将 大对象=null 是否有效?
这句话会被编译器优化掉了吗
fut20090715 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dahai_2002 的回复:]
>>甚至关闭程序也只能回收40%左右
关闭进程的话,系统会将该进程占有的所有资源都释放掉。所以你说的这句话我还是不太明白。
你是否有后台服务呢。你是通过什么工具看出你程序占用的内存空间的呢。就是taskmanager吗?
[/Quote]
就是打开了一个程序 内存上涨
关闭程序,内存释放的比当初上涨的少
直接通过任务管理器观察的
dahai_2002 2009-12-19
  • 打赏
  • 举报
回复
>>甚至关闭程序也只能回收40%左右
关闭进程的话,系统会将该进程占有的所有资源都释放掉。所以你说的这句话我还是不太明白。
你是否有后台服务呢。你是通过什么工具看出你程序占用的内存空间的呢。就是taskmanager吗?
Arceibald 2009-12-19
  • 打赏
  • 举报
回复
帮忙顶下.
nosuchtracter 2009-12-18
  • 打赏
  • 举报
回复
那和GC应该没啥关系吧?
程序没处理好
fut20090715 2009-12-18
  • 打赏
  • 举报
回复
今天论坛很热闹
很快就沉下去了
fut20090715 2009-12-18
  • 打赏
  • 举报
回复
请各位大侠帮帮忙 啊
fut20090715 2009-12-18
  • 打赏
  • 举报
回复
自己顶下

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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