关于.NET内存回收的问题?

走你_ 2013-08-30 09:09:56
都说.NET自动回收垃圾内存,但是我写了个程序,然后在任务管理器里边看,我看了5分钟,内存一个字节都没少,而且我在TEXTBOX打字的时候,打英文还好,一用搜狗输入法打汉字,任务管理器里显示的内存就猛涨,平均打10个字就涨一M多,而且我把字删掉 内存也完全不减。求解


好有个问题,我程序里新建了一个线程,但是我主窗口点右上角X关闭的时候,这个程序的进程不结束,在任务管理器里还能看到在执行,求原因
...全文
411 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2013-09-09
  • 打赏
  • 举报
回复
不知道你的TextBox有没有类似于UndoLimit的属性,设为0应该就可以了。
showjim 2013-09-09
  • 打赏
  • 举报
回复
输入框有记忆功能,不然怎么回退。 搜狗输入法其实同步输入了英文,最后确认才替换成的汉子。
卧_槽 2013-09-09
  • 打赏
  • 举报
回复
引用 14 楼 beyond789654 的回复:
引用 13 楼 lizhi3186575 的回复:
看看CLR via C# 这本书中的垃圾回收章节,不是一有垃圾就立即回收的
我知道 我是想问为什么我TEXTBOX输入汉字会涨100K内存,输入英文就很少才几个字节
那你用你懂的那些东西想想你敲了几个字符,计算机这时候都做了些什么。
走你_ 2013-09-07
  • 打赏
  • 举报
回复
引用 15 楼 dongxinxi 的回复:
中文的码表比较大,不管是拼音还是五笔,当你每输入一个,都会去码表查找与你输入所匹配的项,然后以浮动的方式显示在IME激活的位置 但是英文用ASCII码就完了
感觉不是那么回事啊,加载码表加载一次就够了,为什么我打几个字就张1M
  • 打赏
  • 举报
回复
中文的码表比较大,不管是拼音还是五笔,当你每输入一个,都会去码表查找与你输入所匹配的项,然后以浮动的方式显示在IME激活的位置 但是英文用ASCII码就完了
走你_ 2013-09-07
  • 打赏
  • 举报
回复
引用 13 楼 lizhi3186575 的回复:
看看CLR via C# 这本书中的垃圾回收章节,不是一有垃圾就立即回收的
我知道 我是想问为什么我TEXTBOX输入汉字会涨100K内存,输入英文就很少才几个字节
卧_槽 2013-09-06
  • 打赏
  • 举报
回复
撸主你啥都不懂,让我们怎么跟你解释呢?
走你_ 2013-09-06
  • 打赏
  • 举报
回复
引用 8 楼 C_htp 的回复:
你这样的GC会回收才怪、一直对它持有引用、它不是垃圾、再说也不是一失去引用就回收的、
那怎么才能让他失去引用呢 ,还有比如我定义的值类型的变量 int什么的 这个是如何回收的?
人生导师 2013-09-06
  • 打赏
  • 举报
回复
看看CLR via C# 这本书中的垃圾回收章节,不是一有垃圾就立即回收的
走你_ 2013-09-06
  • 打赏
  • 举报
回复
引用 10 楼 yuwenge 的回复:
撸主你啥都不懂,让我们怎么跟你解释呢?
你怎么判断我什么也不懂呢
maysoft 2013-09-06
  • 打赏
  • 举报
回复
没引用的。。。或者垃圾回收器觉得资源紧张了。才会去扫描内存。。看哪些没引用了。又不为NULL的。。。然后再GC掉。。。
  • 打赏
  • 举报
回复
你这样的GC会回收才怪、一直对它持有引用、它不是垃圾、再说也不是一失去引用就回收的、
dota_371581 2013-08-30
  • 打赏
  • 举报
回复
自动回收只回收托管类型,前提还得是垃圾即没有引用。至于线程,要么设置为后台线程,关闭程序后自动关闭线程,要么自己abort掉。
threenewbee 2013-08-30
  • 打赏
  • 举报
回复
另一个问题,你可以在Form的Closed里加上Application.End();关闭消息循环,结束主线程。
threenewbee 2013-08-30
  • 打赏
  • 举报
回复
GC不会一遇到垃圾就回收的。那样虽然节约了内存,但是浪费了CPU,同时增加了内存碎片。
bigbaldy 2013-08-30
  • 打赏
  • 举报
回复
调用GC.Collect()试试,如果没减,说明你变量没有失去引用。 第二个问题,线程必须退出后进程才会退出,所以在X之前先Abort线程
moonwrite 2013-08-30
  • 打赏
  • 举报
回复
1.回收的前提是:变量失去了引用,请问你的变量失去了引用了吗 2.http://uinb.blog.163.com/blog/static/19410412420116183314217/ (我不会winform 百度搜的)
llxzj60 2013-08-30
  • 打赏
  • 举报
回复
1.自己检查程序哪儿有会导致内存溢出的bug 2.需要将你创建的线程abort才进程才会退出
hangang7403 2013-08-30
  • 打赏
  • 举报
回复
bangdingyixia......

110,539

社区成员

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

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

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