/相 发表于 2023-11-9 13:42:31

[原创]关于游戏测试-内存泄露客户端版本


文/tv陈子昂
测试对象:flash等游戏

必须使用工具:windows下带资源管理器和“性能”

环境:采用不编译/不看代码黑盒的办法

基于系统性的做性能测试,效果佳,时间长。白盒动态也有,使用T-Profiler来寻找泄漏效果中等,时间短,需分析,不过还是通过黑盒的业务来分析最后的结果。加载/卸载多个SWF模块,但是存在一个调用次数的问题,容易误诊,可能和我技术有关(也无法关联测试handle,calls)。白盒静态,效果佳,极难,时间中等。如果单纯丢份代码分析“水晶一样的报表”给程序,我想完全无效果,马路边找个mm,都可以10分钟教会她如何玩该环节的白盒静态。废话说完,入正题。

内存泄露在产业中,以验证客户端为主。服务端不会出现out memory of error之类的错误,除非是那种运载很久后台的程序。

内存泄露原理这里就不多做介绍了。下面的方法可以通过图的指标来基本查看到。泄露的回收率,每次增加多少,平缓期后,回收多少。当发现被测方性能不够理想,可以采用冲击的办法,用多少次的行为来使现有的内存翻倍等。

那么内存泄露被确定哪些步骤出现后,会划分出3个类型,主要目的是为了确诊。不同的内存泄露类型决定了可能是哪部分出的问题,这种做法是一环扣一环的。

内存泄露分为3个类型,前2类,常发性和偶发性的危害并不大,通过划分模测试点和对于测试点进行行为组合的分析后,可以基本全部找到。偶发性可以借助wins性能监察工具来查看。隐性会在后面介绍。

可供参考的截图(winxp)
http://upload.gameres.com/20123/sf_7231215_8885.png


ProcessExplorer可替换上图的。win7自带的也十分好用。

如果使用了flash应用计数器,一定会产生内存泄露。

非黑既白的教条:

引用计数法优点是运行效率高,但该方法无法清除存在循环引用关系的对象集合。

有没有使用垃圾收集器(garbageCollection),垃圾回收器的写法是什么?

最小化浏览器会不会导致内存的回收,回收的比率是?

实例成员?静太成员?



如果看代码白盒,也可以做。当你了解代码对于内存分配的原理。这点是最好的办法。

做性能记注需要花大量的时间关注系统,那么也就不难了。

以上为客户端部分内容,至于服务端部分,还是用远程的好。

tv猫 game小屋http://blog.sina.com.cn/chendamao1983

anaboewako 发表于 2023-11-9 13:43:14

好文,如果能更详细点就更好了
页: [1]
查看完整版本: [原创]关于游戏测试-内存泄露客户端版本