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停止运行
想请教一下各位大侠,这种内存泄露,是不是因为我添加的那部分脚本导致的,如果是的话,如何解决?如果不是的话,应该如何排查导致内存泄露的脚本位置?
望诸位多多指教,感激不尽。。。 free一下变量 {:4_102:}期待明早能看到各位大侠的回复。。。 云层不是说了吗?你把变量用完后,清零。 首先,我表示,云层的回复,我在自己顶贴的时候还没看到,对此表示歉意
其次,周遭的人都说,不用malloc申请的变量,就不需要用free释放了,所以我不知道,我这样定义的变量到底用不用释放,如果需要释放,直接用free就行么?还望各位高手指点一二。 你直接free sessionID 执行下试试呗。 还有。。。。如何区分到底是脚本造成的内存泄露还是被测系统造成的内存泄露? 我觉得如果被测系统造成的内存泄露的话,可以看服务器的日志,里面会有相关内容的 回复 8# mvvztt
请问 服务器的日志怎么看?最好给个例子。。。 我把指针和数组都进行了free操作,可是mmdrv还是在不断的吃掉内存。。。而且脚本在不同的机子上跑过,结果是一样的。。。诶 我无奈了 回复 2# 云层
谢谢云层的指点。。。
变量free了,mmdrv还是在不断的涨。。。。另外,我用的是LR11 回复mvvztt
请问 服务器的日志怎么看?最好给个例子。。。
孤单芭蕾lonely 发表于 2012-2-2 09:51 http://bbs.51testing.com/images/common/back.gif
你用的是什么服务器嘞~~~我用的是tomcat,目录下就有logs目录,可以看的,问你们的开发就知道了,呵呵 回复 12# mvvztt
谢谢你的回复 初步验证 不是系统内存泄露的问题
诶~纠结中。。。 sessionID+=12;
这是什么意思,sessionID不是指针吗,这样操作也行 sessionID 写法问题 回复mvvztt
谢谢你的回复 初步验证 不是系统内存泄露的问题
诶~纠结中。。。
孤单芭蕾lonely 发表于 2012-2-2 16:23 http://bbs.51testing.com/images/common/back.gif
想知道是否是被测系统造成的内存泄露,还有一个办法就是使用内存泄露检测工具,看看这个帖子http://bbs.51testing.com/thread-87138-1-2.html 回复 14# sculley
谢谢sculley的回复
这个操作的目的是移动指针的初始位置,让它指向数组的第13个字符,截取从这个字符还是的数组作为关联时要用到的数据 回复 15# 泊涯
谢谢泊涯的回复
你所谓的写法问题,和sculley是一个意思么?还是其他的什么意思 麻烦解释一下 对于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);
。。。。。。 因为是loadrunner11中的flex协议不完善造成的,打上patch1和2解决问题。
页:
[1]
2