找回密码
 加入
搜索
查看: 4919|回复: 10

[效率算法] 已解决 求助关于内存回收的问题

  [复制链接]
发表于 2012-4-4 22:00:36 | 显示全部楼层 |阅读模式
本帖最后由 iank 于 2012-4-7 12:43 编辑

今天写了一个程序,同时运行这个程序5次,一开始还好,但是随着运行时间变长,程序占用的内存越来越多,最后导致全部占满,电脑卡死。。

分析了一下
比如类似这样的
For $i = 1 To 1000000 Step 1
   ;省略一些一些乱七八糟的操作代码。。。。。。。。。。
   $content = "非常长的字符串,比如一个大网页的源码。。。。。。。。。。。。。。。。。。。。。"& $i
    ;省略一些一些乱七八糟的操作代码。。。。。。。。。。
Next
这种情况下  每次循环保存的$content字符串会一直保存吗  还是会自己回收掉?
如果一直保存,应该怎样释放上次循环使用的内存呢

评分

参与人数 1金钱 +15 收起 理由
afan + 15 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2012-4-4 22:23:07 | 显示全部楼层
同一变量多次赋值,内存中只存放最后一次的值
发表于 2012-4-4 23:50:37 | 显示全部楼层
数量巨大的循环,建议加入容错代码。

Local $str = ""
Local $k=1

For $i = 1 To 1000000
        If StringLen($str) >= 10000 Then
                Local $hFile = FileOpen(@ScriptDir & "\temp"&$k, 1 + 8)
                FileWrite($hFile, $str)
                FileClose($hFile)
                $str = ""
                $k+=1
        EndIf
        
        $str &= Random(0, 1000, 1) & ","
Next

Local $hFile = FileOpen(@ScriptDir & "\temp", 1 + 8)
FileWrite($hFile, $str)
FileClose($hFile)
 楼主| 发表于 2012-4-5 09:23:44 | 显示全部楼层
本帖最后由 iank 于 2012-4-5 09:25 编辑

回复 3# 3mile


    多谢,看了你的代码我想我找到我程序出问题的原因了  我在循环中使用了文件写入,但是我是这么写的                 FileWrite("success.txt", $i & @CRLF)  每次循环都没有将他关闭,所以我想是这个原因,3mile大神,我想的靠谱吗
 楼主| 发表于 2012-4-5 09:24:13 | 显示全部楼层
回复 2# 298311657


    多谢,学习啦
发表于 2012-4-5 10:31:46 | 显示全部楼层
回复  3mile


    多谢,看了你的代码我想我找到我程序出问题的原因了  我在循环中使用了文件写入,但 ...
iank 发表于 2012-4-5 09:23



    跟这个无关,也跟你在一楼提的原因无关。这两处都不可能有内存侧漏
要想真正找原因,只有把你代码发上来,而不是你自认为的。若你想精减代码后发上来,至少得在你的机子,精减的代码能重现你在一楼说的问题。
发表于 2012-4-5 12:54:05 | 显示全部楼层
回复 4# iank
我觉得靠谱,我有过类似的经历。
好像是无限次的使用UDPOpen函数但是没有使用UDPShutdown函数,结果在任务管理器看到这个进程的使用内存一点一点地增大,导致最后电脑当机了,楼主可以用fileclose函数看看是不是好了?
 楼主| 发表于 2012-4-5 13:42:06 | 显示全部楼层
回复 6# happytc


    多谢大神提醒 上午时已经解决了 确实不是因为文件没关闭或者变量没释放

    真正的原因在

    我用的是嵌入的ie,本机是ie9, 之前为了少占流量,把ie里设置成了关闭图片显示。
    然后我把图片显示打开,一切ok!~  
    具体原因为啥我也不晓得,反正现在运行正常就好啦。。
 楼主| 发表于 2012-4-5 13:44:02 | 显示全部楼层
回复 8# xms77 我不是这个问题引起的  是浏览器设置的问题,把图片设置成开启显示后 程序跑的那就一个顺畅啊 好像吃了泻药一样的
发表于 2012-4-5 21:24:43 | 显示全部楼层
回复 10# iank
恭喜楼主解决问题,还请楼主给标题加上“已解决”。
发表于 2012-4-6 10:50:04 | 显示全部楼层
好像吃了泻药一样的
!!!!!!!!!!!!!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 21:12 , Processed in 0.101864 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表