ASP.NET内存占用问题

转载 2007年10月02日 00:17:00
原来写过的一部分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  

【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制深度剖析

构建高性能ASP.NET站点第七章如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制剖析    前言:本章主要详细的讲述如何因内存问题而导致的性能问题,很多的时候都是深入.NET内核进行分析,然后...

.NET 程序内存占用问题

.NET 程序内存占用问题 1、使用性能测试工具dotTrace 3.0,它能够计算出你程序中那些代码占用内存较多 2、强制垃圾回收 3、多dispose,close 4、用timer,每...

C#的自动内存管理机制-ASP.NET中的垃圾回收机制(GC)【资料来自网络】

ASP.NET中的垃圾回收机制(GC)【资料来自网络】 ASP.NET中的垃圾回收机制: 在说这个问题的时候,我们先引入一个在GC中比较常见的内容,那就是--托管资源,那么什么是托管资源呢?其...

asp.net中获取本机的相关信息!(CPU、内存、硬盘序列号等)

// 注意:首先要在项目bin目录中添加引用 System.Management using System; using System.Collections.Generic; using ...
  • dxnn520
  • dxnn520
  • 2012年11月24日 06:53
  • 4867

[ASP.NET]解决“试图将 Null 值赋予一个非 Variant 数据类型的变量”的问题

错误提示 :"试图将 Null 值赋予一个非 Variant 数据类型的变量" 错误原因:在VS2005中,用ACCESS做数据库时insert into 命令会把自动编号也会加进去,所以这个就需要...

基于ASP.net C#技术来实现,介绍如何处理Session对象变量失效的问题

基于ASP.net C#技术来实现,介绍如何处理Session对象变量失效的问题 Cookie对象是用来存储有关当前用户数据的小信息包,它可以在浏览器和Web服务器之间传递。在Web应用中,Co...

ASP.net 中遇到的gridview及formview问题集锦

1、当选中gridview的新增,formview正常新增,但选中编辑后,formview刷不出来的问题? 答:SQLdatasource让它使用指定的表或视图,同时自动生成高级语句,不要使用whe...

Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)

转自:http://www.cnblogs.com/smjack/archive/2009/02/26/1398748.html 上半部分经过本人实际测试,完全可用!至于下部分解决讯雷下载的未实际测...
  • asciil
  • asciil
  • 2013年01月14日 16:13
  • 430

ASP.NET(C#) 读取EXCEL问题汇总

使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可。 一 在D盘创建excel文件test.xls:    二 将工作表Sheet1的内容读取到DataSet ...

问题解决---未能将网站配置为使用ASP.NET4.0

自从装了WIN10以后在打开VS的程序的时候就会出现以下的错误:                   非常麻烦,有时会出现4此这么多,于是就去网上查了以下,在这里总结一下,以免以后出现这个错误不知...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET内存占用问题
举报原因:
原因补充:

(最多只允许输入30个字)