悉野小楼

导航

记录一次C++内存泄露的检测过程

线上游戏长时间运行后, 占用内存比以前大很多, 发现游戏对象也得变多很多.主程尝试从最近改动过的代码检测, 做了小改动, 更新上线, 内存还是不断增加.
我提出用服务端根据聊天做个GM命令, 输出当前对象个数信息到日记. 更新上线, 手动输入gm命令, 比较几次日记, 方现对象是变多, 但不知道是哪个, 我修改输出内容, 按类型输出对象个数, 后面比较发现buff对象明显增多.
因为最近策划配置了很多dot的buff. 再修改日记输出信息, 如果是buf类型, 输出主人是否为空, 及主人的id,
后面内网测试, 发现多出来的buff的主人为空, 主人已经释放, buff对象没释放, 检测buff处理逻辑, 发现有一段buff从队列中取出, 但最后没释放, 加了一行buff->Dispose(); 后就解决了

posted on 2023-11-09 11:40  悉野  阅读(2)  评论(0编辑  收藏  举报