遇到一个错误“outofmemeryexception”

鼻涕蛋蛋 2009-04-24 09:31:36
现在要把一个数组中的值,循环遍历后,全部赋值给一个字符串类型的变量。。。。
IList<myrow> datelist = new List<myrow>();
....遍历datelist 给赋值

int num = datelist.Count;
for (int n = 0; n < num; n++)
{
temp = temp + datelist[n].THEROW;
}
//上面的数组中,存放的是一个类的n个实例,THEROW是类的一个属性
public class myrow
{
public string THEROW;
public string THEKEY;
public myrow(string r, string k)
{
THEROW = r;
THEKEY = k;
}
}

现在,出现的一个问题是,当n运行到datelist的总数量的一半左右的时候,系统就报错,报出一个“outofmemeryexception”类型的错误。。。。
非常不理解的是:如果datelist的length为30000的话,n就大约在15000条处报错,可是如果length为15000的话,n就在7000-8000左右处报错。。。对于这个现象,非常不理解。。。
请大家帮忙解答下。。。。
在线等,如果有说的不清楚的地方,请提出来,我马上说明白。
感谢!
...全文
147 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
鼻涕蛋蛋 2009-04-24
  • 打赏
  • 举报
回复
刚开始,也是认为是数据量太大,可是,想了几个方法,把数组的内容拆分后,再组合起来赋值给字符串,可是每次数组的数量到达50%左右的时候,就溢出了。。。。
鼻涕蛋蛋 2009-04-24
  • 打赏
  • 举报
回复
for (int n = 0; n < num; n++)
{
temp = temp + datelist[n].THEROW;
}
如果num实际是8000+,把上面的句子中的num人为的固定为4000的话,就不会溢出。。。
满衣兄 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yhnxxx 的回复:]
可是,奇怪的是 我数组是30000的时候,15000左右溢出了,,那说明,接受的字符串是有能力,接收到15000的数据吧?可是,当数组的总数量为15000的时候,在7000-8000左右的数据量上,就溢出了。。。这到底是什么原因?很不明白。。
[/Quote]
那你数据是10的时候看看5的地方溢出吗?
鼻涕蛋蛋 2009-04-24
  • 打赏
  • 举报
回复
可是,奇怪的是 我数组是30000的时候,15000左右溢出了,,那说明,接受的字符串是有能力,接收到15000的数据吧?可是,当数组的总数量为15000的时候,在7000-8000左右的数据量上,就溢出了。。。这到底是什么原因?很不明白。。
lizhengqin 2009-04-24
  • 打赏
  • 举报
回复
内存溢出,可能和num 数值太大有关系
满衣兄 2009-04-24
  • 打赏
  • 举报
回复
相信做ASP.NET中大型Web应用的人都碰到过OutOfMemoryException这个异常,对于这个问题我研究了很久,在微软的技术文档上也了解过此问题出现的原因,说实话,到目前我仍然没有完美的解决方案,这里只是把我处理该问题的一些经验提出来和大家一起分享,尽可能的避免该问题的发生。

1) 首先,在硬件的配置上,出现该问题的原因我想很多人已经知道了,那就是IIS对于内存的管理存在一些限制,普遍的认识是800M的线程内存使用上限(通过我的一些客户实践证明的确如此,甚至更低...),不管是w3wp还是aspnet_wp,这个限制对ASP.NET应用服务器的机器配置而言其意义是很明显的,超过2G的内存对于单纯的Web服务器而言作用是很微小的,所以在Web服务器的配置上可在CPU的数量方面多考虑。

2) IIS配置上的方案,IIS5.0可安装一个IIS5Recycle程序,该程序采用服务的形式来回收工作进程,安装说明:http://support.microsoft.com/?id=322350,对于IIS6.0可以在应用程序池的配置上设置自动回收工作线程的时间,我一般都会设在凌晨2点:)

3) 在.NET Framework的配置上,修改machine.config配置文件中的配置节<processModel>的属性“memoryLimit”,这个属性的值默认为“60”,是一个百分比数据,我们需要按照服务器实际的内存数,再根据800M的上限来设置这个值,那么在达到这个阀值时IIS会自动回收进程

4) 在Web应用程序的开发中,必须尽可能的减少对内存使用的浪费,及时释放资源,我想说明的有3点:1、通过代码主动调用Dispose方法进行资源释放,2、对于实体类尽可能复用,不做多余的声明和创建,3、减少Session的使用,缩短Session的有效期,尤其对于大数据对象尽量不要存储在Session中

5) 一个比较通用的办法,在Web应用程序的基类中通过try{}catch{}来主动捕捉OutOfMemoryException异常,发现该异常后直接调用GC.Collect()进行强制垃圾回收。

最后,有很多朋友提到32位系统对于大内存使用方面可以打开3G模式,这个本身没有什么问题,只是根据个人经验,其对单纯Web应用程序的帮助不大,如果Web服务器还有更多的用途当然也建议采用此模式.

希望对大家处理此问题有帮助.

xfreyes 2009-04-24
  • 打赏
  • 举报
回复
内存溢出,是不是数据量太大了
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 【FAST FWR310 无线路由更新程序】是一个专门为FAST FWR310型号无线路由设备设计的固件升级方案,其主要目的在于改善设备的工作表现、纠正已知的系统缺陷或引入全新的操作特性。对无线路由器进行固件更新,实质上是指替换或升级其核心操作系统(即固件),从而使其运行状态得到进一步优化。 在无线路由器的持续使用阶段,用户有时会遭遇若干操作难题,例如网络连接的频繁中断、数据传输速率不高、无线信号覆盖范围有限等情况。针对此类挑战,通过安装新的固件(即刷机包),能够有效应对上述问题,因为新固件或许已经针对这些普遍存在的问题进行了优化处理。不仅如此,固件升级还能开启一些隐藏的功能选项,或者兼容第三方固件,例如OpenWRT,从而让用户能够进行更深入的系统自定义配置及管理。 FWR310 V5.0升级软件20160301是该刷机包的明确版本标识,显示出这是针对FAST FWR310路由器推出的第五代固件,并且发布日期为2016年3月1日。此版本的更新内容可能涵盖以下几个方面: 1. 运行效能的调优:借助于对路由器处理流程与内存分配的改善,能够加快数据交换速率,减少响应时间,从而全面提升网络的工作效能。 2. 安全防护的强化:更新内容中可能融入了对新兴网络安全风险的防御机制,用以保障用户的资料安全。 3. 互操作性的扩展:可能增强了与更多设备及协议的适配能力,比如最新的无线通信标准或设备连接模式。 4. 运行稳定性的提升:修复了可能引发路由器系统崩溃或意外重启的已知故障,延长了设备的稳定运行周期。 5. 新特性集成:或许增添了提升用户体验的功能,例如远程操作控制、家长监管功能、服务质...
内容概要:本文围绕基于混沌系统与DNA编码的彩色图像加密解密体系展开研究,旨在解决传统图像加密算法密钥空间小、抗干扰能力弱等问题。通过结合混沌系统的伪随机性与DNA编码的高维组合特性,构建了多层级、高复杂度的加密框架,实现了对彩色图像RGB三通道的混淆与扩散操作。研究重点包括加密算法的设计与实现、密钥敏感性分析以及抗噪声和抗裁剪性能的系统性测试。实验结果表明,该算法在面对高斯噪声、椒盐噪声及不同面积、位置的图像裁剪攻击时,仍能较好地恢复图像主体结构与核心信息,展现出优良的鲁棒性和实用性。文章还总结了当前研究的不足,并对未来优化方向进行了展望。; 适合人群:具备一定信息安全、图像处理或密码学基础知识的科研人员、研究生及工程技术人员。; 使用场景及目标:①用于高安全性需求下的图像传输与存储场景,如军事通信、医疗影像保护等;②为复合型图像加密技术的研究提供理论支持与实验依据,推动加密算法向高鲁棒性、强抗攻击能力方向发展; 阅读建议:建议读者结合文中提供的理论基础与实验分析,深入理解混沌与DNA编码的融合机制,并可通过复现实验进一步掌握算法细节与性能边界,重点关注抗干扰测试部分以评估其在实际应用中的可靠性。

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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