孤单芭蕾lonely 发表于 2012-2-1 16:55:24

LR脚本运行中出现内存泄露问题 如何解决

用LR录制脚本之后,在脚本中添加如下代码

int index;
int length;
char str, *sessionID;
。。。。。
strcpy(str, lr_eval_string("{sID}"));
sessionID = str;
sessionID+=12;
。。。。。
其余的脚本都是LR自动生成的,VUGEN运行无误
但当我用controller按照既定场景对脚本进行运行的时候,发现mmdrv.exe进程所占用的内存不断增加,运行时间过长就会导致内存溢出,controller停止运行

想请教一下各位大侠,这种内存泄露,是不是因为我添加的那部分脚本导致的,如果是的话,如何解决?如果不是的话,应该如何排查导致内存泄露的脚本位置?
望诸位多多指教,感激不尽。。。

云层 发表于 2012-2-1 17:30:38

free一下变量

孤单芭蕾lonely 发表于 2012-2-1 17:31:20

{:4_102:}期待明早能看到各位大侠的回复。。。

fox7584 发表于 2012-2-1 18:10:56

云层不是说了吗?你把变量用完后,清零。

孤单芭蕾lonely 发表于 2012-2-2 08:44:52

首先,我表示,云层的回复,我在自己顶贴的时候还没看到,对此表示歉意
其次,周遭的人都说,不用malloc申请的变量,就不需要用free释放了,所以我不知道,我这样定义的变量到底用不用释放,如果需要释放,直接用free就行么?还望各位高手指点一二。

shigejinian1 发表于 2012-2-2 09:05:18

你直接free sessionID 执行下试试呗。

孤单芭蕾lonely 发表于 2012-2-2 09:13:03

还有。。。。如何区分到底是脚本造成的内存泄露还是被测系统造成的内存泄露?

mvvztt 发表于 2012-2-2 09:20:57

我觉得如果被测系统造成的内存泄露的话,可以看服务器的日志,里面会有相关内容的

孤单芭蕾lonely 发表于 2012-2-2 09:51:31

回复 8# mvvztt


    请问 服务器的日志怎么看?最好给个例子。。。

孤单芭蕾lonely 发表于 2012-2-2 09:52:19

我把指针和数组都进行了free操作,可是mmdrv还是在不断的吃掉内存。。。而且脚本在不同的机子上跑过,结果是一样的。。。诶 我无奈了

孤单芭蕾lonely 发表于 2012-2-2 09:53:03

回复 2# 云层


谢谢云层的指点。。。   
变量free了,mmdrv还是在不断的涨。。。。另外,我用的是LR11

mvvztt 发表于 2012-2-2 15:04:20

回复mvvztt


    请问 服务器的日志怎么看?最好给个例子。。。
孤单芭蕾lonely 发表于 2012-2-2 09:51 http://bbs.51testing.com/images/common/back.gif


    你用的是什么服务器嘞~~~我用的是tomcat,目录下就有logs目录,可以看的,问你们的开发就知道了,呵呵

孤单芭蕾lonely 发表于 2012-2-2 16:23:45

回复 12# mvvztt


    谢谢你的回复 初步验证 不是系统内存泄露的问题
诶~纠结中。。。

sculley 发表于 2012-2-7 14:49:58

sessionID+=12;
这是什么意思,sessionID不是指针吗,这样操作也行

泊涯 发表于 2012-2-8 09:40:23

sessionID 写法问题

mvvztt 发表于 2012-2-8 14:30:37

回复mvvztt


    谢谢你的回复 初步验证 不是系统内存泄露的问题
诶~纠结中。。。
孤单芭蕾lonely 发表于 2012-2-2 16:23 http://bbs.51testing.com/images/common/back.gif


    想知道是否是被测系统造成的内存泄露,还有一个办法就是使用内存泄露检测工具,看看这个帖子http://bbs.51testing.com/thread-87138-1-2.html

孤单芭蕾lonely 发表于 2012-2-9 11:13:05

回复 14# sculley


    谢谢sculley的回复
这个操作的目的是移动指针的初始位置,让它指向数组的第13个字符,截取从这个字符还是的数组作为关联时要用到的数据

孤单芭蕾lonely 发表于 2012-2-9 11:14:00

回复 15# 泊涯


    谢谢泊涯的回复
你所谓的写法问题,和sculley是一个意思么?还是其他的什么意思 麻烦解释一下

孤单芭蕾lonely 发表于 2012-2-9 11:18:27

对于sessionID所用到的地方。。。在这里再多附上一段代码 希望可以有助于我所表达的意思:
。。。。。。
        lr_xml_get_values("XML={xml}",
                          "FastQuery=/AMFPacket/AMFHeaders/AMFHeader/string",
                          "ValueParam=sID",
                          LAST);
        strcpy(str, lr_eval_string("{sID}"));
        sessionID = str;
        sessionID+=12;

        flex_amf_call(
                "AMF3_call_1",
                "Gateway=http://192.168.6.125:8080/sbs/messagebroker/amf;jsessionid={sessionID}",
                "Snapshot=t42.inf",
                MESSAGE,
                "Method=null",
                "TargetObjectId=/1",
                BEGIN_ARGUMENTS,
                "<AMF3><object-externalizable-custom><flex.messaging.messages.RemotingMessage>\n "
                " <destination>versionController</destination>\n<messageId>"
                "DC9C0DBE-9D1C-869C-CE6E-EADC775BB071</messageId>\n<timestamp>0</timestamp>\n"
                "<timeToLive>0</timeToLive>\n<headers>\n    <entry>\n      <string>"
                "DSEndpoint</string>\n      <string>my-amf</string>\n    </entry>\n    <entry>\n "
                "   <string>DSId</string>\n      <string>"
                "{dsID}</string>\n    </entry>\n</headers>\n"
                "<operation>getVersion</operation>\n<parameters/>"
                "\n</flex.messaging.messages.RemotingMessage></object-externalizable-custom>"
                "</AMF3>",
                END_ARGUMENTS,
                LAST);
。。。。。。

aakkii 发表于 2012-2-9 16:41:36

因为是loadrunner11中的flex协议不完善造成的,打上patch1和2解决问题。
页: [1] 2
查看完整版本: LR脚本运行中出现内存泄露问题 如何解决