程序跑了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,是吗?
这个要 斟酌 时间复杂度 和空间复杂度 还是看需要。
不要什么理论一看到就死搬硬套,要学会灵活应用。
而知道什么时候 该怎么用,才是本事。 知道 懂得 明白 和这个相比都不值钱。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于VB.net中的验证控件
小弟正在开发一个C/S结构程序,有几个界面有较多的textbox,是关于用户数据输入的,现在想做验证,听说有验证控...
-
多表查询问题
我有三个表,一个表为基本表,一个是代码表,一个是出差表
表一 编号,姓名 ,职别
001 李三 101
...
-
DATAGRIDVIEW无法删除未提交的新行?
再DATAGRIDVIEW录入时,想删除最后自动新增的一行,提示无法删除未提交的新行
Private Sub Dat...
-
迷茫了几天,求各位高手指教一下!下面是我的代码!
<!--#include file="webconfig.asp"-->
<%
Dim SortID
SortID=Trim(FLib.SafeSql(R...
-
vb.net 断开和连接网络连接 修改代码
在vb.net中实现断开和连接网络连接的代码,我在网上找了一段代码
Option Explicit On
'首...
-
DataGridView直接导出EXCEL
如何直接读取DataGridView中的数据,并导出成Excel可以直接读取的文件
记住,我不要通过DataTable。
希...
-
求教:如何在vb.net下做一些好看的界面,整一些好看的效果,改变控件,让控件变得好看点?
有没有点例子?有没有点直接可以做控件的软件?
---...
-
在VB中,对SQL数据库进行增删改语句怎么写呢?
小弟做课程设计,遇到了一点小麻烦,卡在了这里,不知道在VB中怎么写对SQL数据库的增删改...
-
文本框中的数字精确到小数点后两位
请问如何让文本框输入数字后精确到小数点后两位,如:当输入112时,显示为112.00
------解决方案--...
-
VB.NET2008如何利用SendMessage修改按钮的Text?
为了测试 Windows API ,试图点Button用SendMessage修改该按钮的Text,竟然没成功,请教...