1
ChangeTheWorld Nov 5, 2014
被迫重启……先加一个24天自动重启的脚本再说
|
2
hjc4869 Nov 5, 2014
这种级别的大项目不做好unit test,不在每个unit test上考虑可能产生内存泄漏的地方,就是作死。
|
3
zlbruce Nov 5, 2014
可以用 valgrind 试试
|
4
shawngao Nov 5, 2014
讲下以前公司的做法:
一般是先回退版本,测试找到无内存泄漏的commit,以这个commit新建一个checkbranch,让每个开发人员去diff自己模块的最新版本与这个checkbranch,检查自己修改的代码。 开发人员如果觉得没问题,则将diff提交到checkbranch,由PM编译版本并测试。 通过后进行下一个。 |
5
openroc Nov 5, 2014
之前在windows上遇到过,泄露handle的,一次就是4个字节,由于server连续运行,时间长了,就。。。。。 哈哈
|
6
min Nov 5, 2014 一天只漏这么一点点,随便插一条内存可以多跑一个月了
不够再加 |
7
yanwen Nov 5, 2014
田春 是伞哥么?
|
8
yanwen Nov 5, 2014
擦。。一看 还真是伞哥。。。
|
9
wdlth Nov 5, 2014
写了这么多代码都不做内存泄露检测的么?
|
11
LazyZhu Nov 5, 2014
内存dump后看看?
|
12
zhangdawei Nov 5, 2014
@vivyli 我们公司也是这么干的,代码历史悠久,别的办法不多。
|
14
akira Nov 5, 2014 对内存申请/释放函数做钩子 日志记录下调用入口以及申请的大小以及返回内存地址
跑上一段时间后日志处理下应该就能知道大概是那些调用点出了问题 |
15
stormslowly Nov 5, 2014
14正解 很多单元测试框架就搞的。。
|
16
cvrock Nov 5, 2014
啥平台?在win下只要开了全页堆windbg扫两眼就能秒杀了。
|
17
nsa Nov 5, 2014 via iPad
日志,日志,还是日志
|
19
yuezhimsolo Nov 5, 2014
总结:应急 - 先加一个24天自动重启的脚本;思路 - 日志;过程 - 回退版本,测试找到无内存泄漏的commit,以这个commit新建一个checkbranch,让每个开发人员去diff自己模块的最新版本与这个checkbranch,检查自己修改的代码。
关键话:不在每个unit test上考虑可能产生内存泄漏的地方,就是作死。 |
21
tabris17 Nov 5, 2014
这道题目的关键在于“无法重现这个问题”。否则很好解决,无论是倒退版本做code review还是调试或dump内存。
|
22
tabris17 Nov 5, 2014
另外不是有静态代码检查工具的嘛,不是CPPer,具体不清楚
|