今天出了个大问题,事件队列插入了,但未进行遍历,自然也未释放。
开始怀疑是技能,buff等申请了未释放,但最后用机器人压测,排查到逻辑问题。
现象是:每秒100多K增长,很固定。
总结一下,查找过程
查一下new,delete配对的。
查一下erase,有没有迭代器value是指针的。
查一下clear,同上。
查一下,事件队列,插入与释放。
保存一下dmp,用vs看一下。
用工具查一下
工具查看如下:
任务管理器
确定增长幅度与时间点。
内存对比工具
例如Debugging Tools for Windows(x64)
设置
设置exe,绝对地址
gflags -i *.exe +ust
设PDB所在路径,绝对地址
set _NT_SYMBOL_PATH=d:\sf
使用,***是进程ID
打印当前时间点到t1
umdh -p:*** -f:d:\t1.txt
打印当前时间点到t2
umdh -p:*** -f:d:\t2.txt
对比t1,t2到out
umdh -d:*** d:\t1.txt d:\t2.txt > d:\out.txt
c.例
图中:
字节数,一般会比正常多一点(我每个new=100字节)
块个数
字节数,前后值,新3040,旧1520
块个数,前后值,新20,旧10
堆栈
参考:
https://blog.csdn.net/suhuaiqiang_janlay/article/details/47703391
https://blog.csdn.net/lluozh2015/article/details/73611079