博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[.Net]System.OutOfMemoryException异常
阅读量:6713 次
发布时间:2019-06-25

本文共 740 字,大约阅读时间需要 2 分钟。

1. 一个异常情景

加载15000条等高线,平均每条线有400个点到三维球上,等待时间太长。而且可能会报内存异常。

2. 不错的分析

典型出现内存溢出的情况:

double[,] m = new double[16000, 16000];

代码编写方面的注意问题

  1.System.Drawing方面的类使用问题

  System.Drawing用到了很多系统的资源和非托管代码,所以使用的时候要特别小心,注意内存泄漏(Memory Leak)例如:BitMap.MakeTransparent方法的使用问题:

  2.new byte[]问题,当使用字节数组导致内存溢出的情况

  处理流的时候常常会用到new一个大的byte数组。但在多用户情况下会消耗大量的内存。正确的做法应该是定义一个比较小的byte数组做为缓存,然后循环使用。如在我们的程序中,有些地方使用不当,当图片(或附件)过大或过多的时候, new byte[length]就有可能消耗过多的内存。

  这个在Ftp上传下载的时候需要注意。

  3.避免使用大对象数组或小对象大数组

  编程时同样要重视效率问题(包括内存占用问题)。

  4.Com接口调用是要注意释放对象。

其他过多的托管内存使用量通常由以下因素造成:

  1 将大型数据集读入内存中。

  2 创建过多的缓存条目。

  3 上载或下载大文件。

  4 在分析文件时过多地使用正则表达式或字符串。

  5 过多的视图状态。

  6 会话状态中有过多的数据或者会话过多。

调用构造字符串出现内存异常,类似原因分析

 此文推荐,接绍了如何跟踪。

转载于:https://www.cnblogs.com/yhlx125/p/3600272.html

你可能感兴趣的文章
Backup Exec 2010 V-79-57344-65072
查看>>
我的友情链接
查看>>
SequoiaDB 笔记
查看>>
lduan HyPer-V 网络存储(三)
查看>>
SSH 命令行参数详解【英】
查看>>
DNS服务器
查看>>
notify与notifyAll的区别
查看>>
Java读取文件方法大全
查看>>
Java学习lesson 08
查看>>
MarkDown入门
查看>>
项目经理 与 敏捷开发
查看>>
安卓软件开发你知道需要学什么吗,看这里?
查看>>
必读的Python入门书籍,你都看过吗?(内有福利)
查看>>
alibaba.fastjson 乱序问题
查看>>
django 反向关联--blog.entry_set.all()查询
查看>>
网工之路
查看>>
linux 查看发行版本信息
查看>>
数据结构之二叉树遍历
查看>>
Linux rpm 命令参数使用详解[介绍和应用]
查看>>
tr的使用详解
查看>>