- 主题:内存泄露问题你们都是怎么定位的
这两天遇到个内存泄露问题,是生产者生产了,没有小费者小费,(不重要的逻辑,不小费也看不出来)
--
FROM 223.160.128.*
用大数据量重现
用allocator在程序退出时report leak:
1、动态替换allocator(valgrind、app verifier、VLD等profiling工具)
2、静态替换allocator(编译期源码级替换)。工程复杂的话,不允许直接调用malloc/free、new/delete,而是在其上封一层,分配的内存可以带上容易识别的tag,而且可以退出时report。
用debugger看heap数据里的特征,看是哪一类型的数据多。
--
修改:z16166 FROM 123.118.191.*
FROM 123.118.191.*
很多工具吧,推荐个bytehound
【 在 stub (stub) 的大作中提到: 】
: 这两天遇到个内存泄露问题,是生产者生产了,没有小费者小费,(不重要的逻辑,不小费也看不出来)
: --
:
:
--
FROM 117.136.46.*
其实吧,在最开始写的时候就可以把malloc包裹在自己的宏里
里面加入记录和调试代码,需要时打开,不用时关了
--
FROM 221.220.63.*
【 在 Giwatron 的大作中提到: 】
: 其实吧,在最开始写的时候就可以把malloc包裹在自己的宏里
: 里面加入记录和调试代码,需要时打开,不用时关了
具体说说看呢,比如new这种怎么办呢
--
FROM 183.197.81.*
new我觉得重载、继承、宏替换改造都行
看你的团队喜欢哪种方案
这是嵌入式项目的常规做法,因为嵌入式最忌讳内存泄漏
而且是纯新项目用着方便
对于你这种已经写完了的情况
随便找个内存泄漏工具就好了
【 在 stub 的大作中提到: 】
: 具体说说看呢,比如new这种怎么办呢
--
FROM 221.220.63.*
【 在 Giwatron 的大作中提到: 】
: new我觉得重载、继承、宏替换改造都行
: 看你的团队喜欢哪种方案
: 这是嵌入式项目的常规做法,因为嵌入式最忌讳内存泄漏
: ...................
有没推荐的,可以帮忙推荐下
--
FROM 183.197.81.*
valgrind
【 在 stub 的大作中提到: 】
: 有没推荐的,可以帮忙推荐下
--
FROM 221.220.63.*
换上jemalloc
Compile your application with jemalloc by linking it with the jemalloc library. You can do this by adding -ljemalloc to your linker flags.
Set the MALLOC_CONF environment variable to enable profiling and leak detection. Here’s an example command:
export MALLOC_CONF=prof:true,prof_leak:true
Run your application as you normally would.
Check the leak report generated by jemalloc. You can use the jeprof tool to analyze the report and identify memory leaks.
The leak report generated by jemalloc is stored in a file named heap.profile
--
FROM 61.185.159.*