永发信息网

c# 做的C/S程序,在占的内存资源如何释放掉?

答案:3  悬赏:10  手机版
解决时间 2021-02-22 16:35
c# 做的C/S程序,在占的内存资源如何释放掉?
最佳答案
朋友你问的很好,对于你提出的问题,我是这样想的。
C# 内存管理是基于优化的收集方式,引入了代的机制(共分3代0、1、2),当0代充满时或内存紧张时,垃圾收集器会挂起当前线程自动收集0代没有被引用的新建的对象,1代充满时收集1代,2代充满时收集2代。
见意最好不要手动进行GC的收集,这样会带来不必要的系统资源的浪费。
如果不进行人工干预内存太大的话,才可以使用手动回收GC.Collect()进行回收。
这个方法有2种参数
一种是:
GC.Collect() 这种方法对所有的代进行回收
一种是:
GC.Collect(int) 这种方法对0、1、2代,指明的代进行回收。

在这里,我见意在程序运行时监控一下内存占用量,如果一直持续占用内存很大而且没有减少的意思的话你可以使用手动的方法进行内存回收。
如果是间歇性的内存占用大的话,我不见意手动进行回收。因为,会占用资源。

还有一点要注意,在使用的类型含有Dispos()方法或Close()方法时,使用using或try{} finally{}进行释放,如果没有进行有效释放的话,会导制对象进行二次回收,也就是对象要回收两次才可以被真正的释放掉内存。如果第一次对象没有被释放掉,对象会对GC从0代放入1代,这样的话,回出现很长时间内存占用量很大。

最后祝你学业有成。 呵呵。。 在学习的路上只要有坚持的信念,就一定会得到很好的回报。
全部回答
GC.Collect();
晕,楼上的说的这么啰嗦。
你这样做就可以了。
你查询所有是不是返回了一个DataSet,你想啊,你每次单击都去创建一个DataSet肯定了。
你把DataSet定义为全局的。
每次查询时ds.Clear()一次,然后再给DataSet赋值,就不会了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
成都树德协进中学 现在到底怎么样?学生成绩
飞行器设计与工程和飞行器制造与工程的区别
维护国家安全是宪法规定公民必须履行的基本义
就神州十一号飞船发射成功这一话题写一篇作文
阳澄湖大闸蟹要怎么清洗才干净
如何做猪胆粉
阳台上的门窗怎样擦洗才能刷掉上面的灰尘
泰拉瑞亚1.0.3.8如何判定四柱的出生位置?
郎士宁画康熙像
【遥控直升机制作】自制遥控飞机微风2005我有
成年金毛拉肚子发现鼻子刚干l
韩悦轩韩式自助烤肉我想知道这个在什么地方
香香奈儿自然亮肌乳好用么
巨细胞病毒感染能治好吗
读图、回答问题(1)图中人物是谁?(2)他对
推荐资讯
0.4x+2.1=4.3怎么算
单选题甲地是震中,乙地距甲地300千米,正确
英特尔965G主板能否插独立显卡
我很懒不想工作也不想干活我还想吃穿玩住的好
QQ音乐怎么降低版本?
人鬼神 电影里面那个家仆叫什么名字
百度网盘怎么赚钱
求经典语言,诗句或者流行的都可以.
亲人得了癌症,怎么办!我好难过痛苦
牡丹花春天土栽培怎样才能活
鼎鑫投资咨询有限公司这个地址在什么地方,我
水文局水环境监测中心化验员评职称?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?