专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

程序跑了1天,内存使用竟达到1G!请指导

发布时间:2011-06-23 16:01:25 文章来源:www.iduyao.cn 采编人员:星星草
程序跑了1天,内存使用竟达到1G!请大虾指导
用vs2008做了版程序,开始运行时占用4M ,随着时间的增加,内存占用越来越大,一天后,竟达到1G,都快死机了。
 请高手指导,程序中需做哪些工作才能减少占用资源,如使用过多New,如何释放等。
  恳请指点!

------解决方案--------------------
http://www.cnblogs.com/guodapeng/archive/2008/04/02/1134005.html
------解决方案--------------------

如果是C++的话,
主要看你new的类是不是删除了 ,如果类的成员变量有指针什么的,析构函数都要写对应的删除代码 。
搜索你所有的new的位置 ,你内存增长这么快肯定是你频繁使用的的东西;断点跟踪到你new的位置,
跟到它不起作用的时候看是不是被删除了。
原则是一个new对应一个delete。

其它没有垃圾回收机制的语言只是函数不同,方法差不多 、。

工具也是可以检测的,虽然不是很准 。~~
------解决方案--------------------
写程序的时候要注意,俺主要用C的, 动态分配时总是
写好malloc,马上在下一句写上free(),然后再填中间的代码。
fopen也类似。

------解决方案--------------------
用.net还内存泄漏.
主要是两个原因.
1.使用了系统资源,这些系统资源,net本身无法回收,需要手动回收,比如调用API或者使用系统图像资源等等.
2.net架构里面类用完后没有及时的把引用切断,比如都通过map关联上了哦,系统无法自动回收.


------解决方案--------------------
看循环里面的申请空间的地方是不是一直在占用呢,比如说某个写日志或报表的内存缓冲区一直扩张而没有做限制处理。。
我以前搞C的时候就出现过类似的问题,最后发现时报表内存没做好限制,循环里面一直申请空间……
------解决方案--------------------
一般使用Memory.Profiler 自己跟一下程序,确定好泄露的位置才可动手改。

虽然ls都给很多建议,不过都是些普适建议。可以照着做,不过如果不先确定好泄露的位置,你改100个普适的内存泄露点,也比不上一个关键的性内存泄露点
------解决方案--------------------
引用:
引用:
datable dataset 用完后要dispose

每次执行完数据库后,都要dispose,每次用的时候再New,是吗?


这个要 斟酌 时间复杂度 和空间复杂度 还是看需要。
不要什么理论一看到就死搬硬套,要学会灵活应用。
而知道什么时候 该怎么用,才是本事。 知道 懂得 明白 和这个相比都不值钱。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: