CWDG论坛-专业魔兽插件's Archiver

taciya 发表于 2007-10-27 07:57

还是如何控制内存增长问题。。。

虽然我之前看过各斑竹提供的关于内存控制的方法。
不过我实际做起来,还是有点无从下手。
效果还是有的。但还是感觉内存占用不断增长。
开始是70K左右。几个小时以后就会到几百k。而且是持续增长。
我实在找不到问题所在。
想请各位给我看看代码,看是什么导致一直增长状态,如何让它保持一个稳定值,哪怕稳定值比初始值高一倍。
(备注:现在大家内存都很大,当然没人会特别在意内存使用问题,不过wow对我来说一半就是写插件的乐趣。)
下边是我认为可能引起问题的一个lua文件,其他的我想应该不会有问题。先帮我看看吧。

另外我先问一个问题。就是变量集中定义在一个表中和单独定义这些变量。
在效率和内存使用上有什么区别??????????????????

doskoi 发表于 2007-10-27 13:58

没有运行,看代码的话,比如你OT显示的OnUpdate
OnUpdate这个事件本身1秒钟执行十几次的
后面接了一个参数就是elapsed,就是帮助你控制它的执行时间
全局申明2个变量
local lastTime = 0
local delayTime = 0.5
delayTime就是执行一次以后至少过0.5秒再执行下一次
OnUpdate里面
lastTime = lastTime + elapsed
        if ( lastTime > delayTime ) then
        你的代码
        end
这样做能够比较有效的节约一些资源

独立和在表中的问题
假设变量是 a
和在 b表里的c值

a = "123" 和
b[c] = "123"
直接这样使用是没有什么区别的,至少对解释环境来说是这样的
除非你没有c这样的名字,要经常去写个循环读表里的值

taciya 发表于 2007-10-27 15:39

我代码里没有定义新的变量。也会占用资源么。
目标的目标的OnUpdate应该都是系统变量。我只是判断状态。并没有自定义变量啊。

simonw 发表于 2007-10-27 21:02

从你给的代码片段里没看出来问题. 可能出在了别处, 这部分的debug是比较困难的, 有时候bug隐藏的很深, 如果一时无法通过阅读代码找到, 最好使用排除法逐步缩小bug代码的范围. 你可分别去掉你认为可能有bug的代码段这么试.

感觉代码风格有点乱, 最好都写到函数中.

变量如何定义效率差别不大, 主要看如何使用方便.

taciya 发表于 2007-10-28 15:06

全部文件。还得麻烦你们看看。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.