青海龙8国际乐建设、网络推广最好的公司--您身边的龙8国际乐建设专家,马上拿起电话,联系我们:0971-8235355   
青海西宁龙8国际乐建设、龙8国际乐制作公司-西宁威势电子信息服务有限公司
 
西宁威势最新龙8国际乐制做案例展示
Lastest Project
 
当前位置为:首页 >> .NET编程 >> 正文  
龙8国际乐_龙8国际娱乐电脑版_龙8国际娱城手机版

文章来源: 西宁威势电子信息服务有限公司     发布时间:2010-10-2    浏览次数:5951   

来写过的一部分ASP.NET的页面用于数据的选择,也就是把符合条件的记录都显示出来,由用户选择其中的一条。为了加快速度,所有符合条件的数据取出后放在了Session中,分页查找时直接取这个数据就可以了。一直运行的很正常(呵呵,可能是也不正常,只不过没有看出来),后来换了一个数据量比较大的系统,选择几次数据后内存占用竟然到了1个多G,最终造成内存超过极限进程崩掉了。
  百思不得其解,数据是保存在Session中的,退出的时候也根据相关的Key值清除了,应该会释放掉了。但是即使我加了强制回收垃圾代码也不管用。
  没办法,读代码吧,反正知道是在哪部分出的问题。发现产生了一个新的Table用于分页,然后这个Table绑定了自定义的DataGrid并且也放到了Session中,这部分是DataGrid管理的,退出时没有清除。但是这个Table中仅有10行数据(默认的),并且同一个用户打开同一个选择会冲掉以前的缓存,所以不应该出现这么大的内存占用啊。
  只好在缓存的数据做文章了。缓存的是一个DataView(实际是一个DataTable的DefaultView),来点狠的,退出页面时调用CacheData.Table.Clear()清除掉DataTable中的数据,然后CacheData.Dispose(),再用原来的处理清除其他Session中缓存的数据(几个标志,成不了什么气候),顺手在DataGrid中增加方法清除掉缓存,然后强制回收垃圾,运行、测试,查看内存,哈哈,一直稳定在40~50M之间啊。
  俺的机器不行,太大的数据查询造成连接超时,换到了服务器上的正式系统中,打开多个IE访问、测试,基本稳定在了300M左右。成功!
  有必要的话,太大的对象不使用了最好还是显示清除一下好。因为这部分代码写的比较早,想到.NET应该可以自动回收,所以当时根本没有在意这个问题。 想想写这些代码的时候还是比较弱啊 :D 

少用dataset,尽量采用datareader,或者强类型集合。我的网以前大量采用dataset,也是内存占用2G以上,换过来后一直在300M左右(我网访问在4W次/天左右)

 

还是觉得DataSet的使用跟程序员水平有关

同样的痛苦,不过我的数据暂时还少,也很担心数据量大了怎么办.不知道是否有更有效的方法处理垃圾的回收?强制回收?
惨啊(要全部改的话,现在的工程好多文件,要死人的),以后知道自己要谨慎使用Session了.....

session用的内存也是全局的,只不过系统帮你区分了。
cache是全局的,系统没有帮你区分,你就不能自己去区分吗?
使用session本来对系统开销比较大,放这么大的对象在里面我始终觉得不妥。

首先,每次页面运行完之后进行强制垃圾回收,这一点是不可取的。特别是访问较高的情况下,垃圾回收会给系统带来很大的负担,MSDN上面有很多这方面的资料...把查询结果放在Session或Cache之中,是典型的以空间换时间的做法...假若龙8国际乐的访问量大的话,查询频繁,大量的Session必定会使内在耗尽进而导致系统的崩溃.回过头来看,并不见得每个人会把查询而来的结果一页一页都看完.往往只是看结果的前几页,这么一来,大量事实上不会用到的数据就会占用着服务器的内存,这就不太符合经济学原理了.可以考虑用DataReader,不会占用服务器内存,效能优秀,但是会加重数据库的负担.再把常用的查询结果缓存在Cache中,比如说普通的列表.理论上这样会比较好吧.大家交流...
另外,看不太明白的地方是,为什么要把DataGrid放进Session中?
在页面中间放进Session中,页面退出的时候又去清空它们?
感觉整体的设计上有很多不太合理的地方。。。

评论列表
正在加载评论……
  
评论   
呢  称:
验证码:
若看不清请点击更换!
内  容:
 
 
  在线洽谈咨询:
点击这里,在线洽谈   点击这里,在线洽谈   点击这里,在线洽谈
乘车路线    汇款方式   加盟合作  人才招聘
 
公司地址:青海省西宁市西关大街73号(三二四部队招行所四楼)     青ICP备13000578号-1 公安机关备案号:63010402000123    
QQ:147399120    mail:lostlove000@163.com    电话: 13897410341    邮编:810000
© Copyright( 2008-2009) QhWins.Com All Rights Reserved    版权所有:西宁威势电子信息服务有限公司 未经书面制授权,请勿随意转载!